正则表达式,在字符串的任何位置使用负向前瞻。

7

非常抱歉,如果这个问题已经有答案,请原谅我找不到它。

我知道正则表达式中的前瞻和负向前瞻。

问题是负向前瞻只检查当前位置后面的内容。

我需要做的是,如果字符串中包含"career(s)"和"specials"等单词,则查找并丢弃匹配项,但如果它们在字符串的任何地方都包含,则保留匹配项。

如何高效地实现这一点?

目前我正在使用PCRE风格,但越通用的正则表达式越好。

谢谢。

1个回答

8
你可以使用这个正则表达式:
^(?!.*(?:career\(s\)|specials)).*

如果 s 是可选的,则使用以下内容:
^(?!.*(?:career|special)s?).*

正则表达式演示


1
非常有帮助,我已经寻找这个很长时间了,非常感谢! - LoneCodeRanger
1
看起来非常不错!我也正要做类似的事情,但你比我更快!谢谢您先生! - LoneCodeRanger
1
顺便说一下,https://regex101.com/ 上的调试器非常有帮助,我因为你的链接才发现它,以后我会一直使用它! - LoneCodeRanger
1
匹配嵌套括号仅在 PCRE 中受支持,而在其他类型中不受支持。 - anubhava
1
非常感谢您,先生 :) 这已经大大减少了我们需要考虑的问题匹配数量。 - LoneCodeRanger
显示剩余4条评论

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