Golang Go语言中求一个支持 overahead 的正则库
除了 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。在这种情况下,你可能需要手动编写逻辑来处理特定的匹配需求。