仅当不是较大模式的一部分时,正则表达式才匹配模式

时间:2016-04-01 15:38:52

标签: regex regex-lookarounds

我正在试图弄清楚如何编写一个正则表达式来匹配一个模式,但只有当它不是我不感兴趣的更大模式的一部分时。例如,我想要一个正则表达式匹配任何包含除了“foobar”之外的“foo”

所以它应匹配“foobaz”或“fooqux”而不是“foobar”

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以在此处使用否定前瞻来匹配以foo开头而不是foobar开头的字词:

\bfoo(?!bar)\S*

RegEx Demo

<强>解体:

\b        # word boundary
foo       # match literal text foo
(?!bar)   # negative lookahead to fail the match if we have bar ahead
\S*       # match 0 or more non-space characters