Go 正则表达式负向后行断言

3

我有一个正则表达式,在PCRE中可以很好地检测到某个单词,而该单词之前没有任何特殊字符。例如,使用 (?!\S)T4(?!\S) 可以很好地检测到 T4。

匹配: T4

不匹配: ^T4=T4

然而,我不确定 Go Regex 是否支持负向回顾。是否有一些相当的方法可以在 Go Regex 中使用?


3
如果您只需检查单词是否在空格或字符串的开头/结尾之间,就不需要使用那些环视,只需使用 (?:\s|^)T4(?:\s|$) - Wiktor Stribiżew
你说得对。那肯定可以。谢谢! - Jack Holmes
1
我不确定Go Regex是否支持负回顾(negative look behinds)。事实上,它们并不支持。这在SO上已经得到了广泛的讨论。 - Jonathan Hall
1个回答

1

Golang正则表达式不支持负向先行断言或先行断言。

您可以使用以下方式检查单词是否在空格之间或字符串的开头/结尾:

pattern := regexp.MustCompile(`(?:\s|^)T4(?:\s|$)`)

这里是关于正则表达式的内容:

  • (?:\s|^) - 一个非捕获组,匹配空格或字符串开头
  • T4 - 字符串字面值
  • (?:\s|$) - 一个非捕获组,匹配空格或字符串结尾

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接