正则表达式匹配模式,但排除一组单词

Hug*_*not 14 regex

我一直在寻找SO,虽然这个问题在一个场景中得到了回答:

正则表达式匹配除给定列表之外的所有单词

这不是我想要的.我正在尝试编写一个正则表达式,它匹配任何形式[\ w] + [(]的字符串,但不匹配三个字符串"cat(","dog("和"sheep("具体).

我一直在玩前瞻和后视,但我无法到达那里.我可能会过于复杂,所以任何帮助都将非常感激.

Gum*_*mbo 22

如果正则表达式实现支持前瞻或后端断言,则可以使用以下命令:

我添加了\b标记单词边界的锚点.所以catdog(虽然它包含,但会匹配dog(.

但是,虽然前瞻性断言得到了正则表达式实现的更广泛支持,但具有后置断言的正则表达式更有效,因为它仅在前面的正则表达式(在我们的例子中\b\w+\()已经匹配时才进行测试.然而,在实际正则表达式匹配之前,将测试先行断言.因此,在我们的情况下,只要\b匹配,就会测试先行断言.