Go 中否定 Lookbehind:解决方案
在 Go 中,由于性能问题,不支持否定 Lookbehind 断言。为了克服这一挑战,您可以探索替代方法来实现相同的功能。
原始正则表达式旨在提取不以 @、# 或 / 字符开头的命令。这里有两个选项:
1。否定字符集:
删除否定后向查找并将其替换为否定字符集。
\b[^@#/]\w.*
如果允许出现在字符串开头,则用 ^
(?:^|[^@#\/])\b\w.*
2.过滤函数:
实现过滤函数,删除以特定字符开头的单词。func Filter(vs []string, f func(string) bool) []string { vsf := make([]string, 0) for _, v := range vs { if f(v) { vsf = append(vsf, v) } } return vsf }
func Process(inp string) string { t := strings.Split(inp, " ") t = Filter(t, func(x string) bool { return strings.Index(x, "#") != 0 && strings.Index(x, "@") != 0 && strings.Index(x, "/") != 0 }) return strings.Join(t, " ") }
以上是如何在 Go 正则表达式中实现负向后查找功能?的详细内容。更多信息请关注PHP中文网其他相关文章!