尝试在 Go 中编译正则表达式时,用户可能会遇到以下解析错误:
error parsing regexp: invalid or unsupported Perl syntax: (?!
尝试使用环视运算符(?!...,不支持该运算符)时通常会引发此错误在 Go 的正则表达式语法中。
Lookarounds 是一种特殊类型的正则表达式运算符,仅当模式后面或前面没有另一个特定模式时才用于匹配该模式。情况下, (?! 用于检查给定字符串是否不以文本“On”开头。
由于 Go 不支持环视,因此有几种可用的解决方法:
使用单独的正则表达式
一种方法是使用两个单独的正则表达式:
nonOnRegex := regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$") onOnRegex := regexp.MustCompile("^On.*On\s.+?wrote:")
然后您可以检查 nonOnRegex 是否与字符串和onOnRegex 无法匹配以确定所需的结果。
使用可选捕获组
另一种解决方法是使用可选捕获组:
regex := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
使用此正则表达式匹配字符串后,您可以检查第一个捕获组是否存在且以“On”结尾。如果是,则返回 false,否则返回 true。
通过实现这些解决方法之一,您可以有效地复制 Go 正则表达式语法中的环视功能。
以上是如何解决 Go 正则表达式中的环视问题?的详细内容。更多信息请关注PHP中文网其他相关文章!