匹配所有内容,但忽略特定字

时间:2015-08-08 01:33:52

标签: regex

In continuation of a previous question I had:

所以我的情况是我必须只使用正则表达式来选择除特定单词之外的所有内容。出于举例的目的,该词将是“foobar”。这是应该发生的事情:

适用于此示例的原始正则表达式为/\W*\b(?!foobar).+?\b\W*/g

match_highlighted.png

正则表达式的问题在于foobartestfoobar1234之类的东西与foobar之后的任何东西都会被foobar忽略。这不是我想要的。 test1234不应该被忽略,但是起始foobar应该,它不应该排除整个单词,因为它不是完全 foobar 。应该发生这种情况的唯一情况是foobarfoobar,它会忽略两个foobar。 一切其他应该毫无例外地匹配。

The supposed duplicate无法满足我的要求。

最后要注意的是,我不能使用lookbehind,只能前瞻。有没有办法实现我想要的?谢谢!

1 个答案:

答案 0 :(得分:1)

JavaScript正则表达式根本不允许此功能。限制较少的语言允许删除匹配并继续尝试匹配正则表达式。但是,JavaScript不允许这样做。因此,它永远不会跳过字符。它试图匹配每一个。理论上,如果支持外观,那么它仍然可以以复杂的方式存在,但它们也不是。

没有这两种可能性就没有一种万无一失的方法可以确保正则表达式当前没有尝试在特定字符串的中间匹配。