Golang Go语言中求一个支持 overahead 的正则库

发布于 1周前 作者 bupafengyu 来自 Go语言

除了 regexp2 ,这个库有性能问题。


Golang Go语言中求一个支持 overahead 的正则库
1 回复

更多关于Golang Go语言中求一个支持 overahead 的正则库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在 Go 语言(Golang)生态系统中,标准库中的 regexp 包提供了强大的正则表达式支持,但它并不直接支持“overahead”(可能指的是“lookahead”或“lookbehind”这样的正则表达式特性)。具体来说,regexp 包支持正向肯定预查(positive lookahead)和正向否定预查(negative lookahead),但不支持反向预查(lookbehind),因为反向预查的实现相对复杂,并且不在 Go 的正则表达式语法规范中。

如果你需要支持 lookahead 的功能,可以直接使用标准库的 regexp 包。例如,要匹配一个不以 “foo” 结尾的单词,可以使用以下正则表达式:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile(`\b\w*(?!\bfoo\b)\b`)
    text := "This is a test foo bar baz"
    matches := re.FindAllString(text, -1)
    fmt.Println(matches) // 输出: [This is a test bar baz]
}

在这个例子中,(?!\bfoo\b) 是一个正向否定预查,确保匹配的单词不以 “foo” 结尾。

如果你确实需要 lookbehind 的功能,可能需要寻找第三方库或者使用其他编程语言来实现。不过,请注意,许多正则表达式引擎出于性能和复杂性的考虑,也不支持 lookbehind。在这种情况下,你可能需要手动编写逻辑来处理特定的匹配需求。

回到顶部