我正在试图弄清楚如何编写一个正则表达式来匹配一个模式,但只有当它不是我不感兴趣的更大模式的一部分时。例如,我想要一个正则表达式匹配任何包含除了“foobar”之外的“foo”
所以它应匹配“foobaz”或“fooqux”而不是“foobar”
谢谢!
答案 0 :(得分:3)
您可以在此处使用否定前瞻来匹配以foo
开头而不是foobar
开头的字词:
\bfoo(?!bar)\S*
<强>解体:强>
\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