0

假设我想匹配这样的句子:

家在身后,世界在前!

这边走:

^.*(?<=(H|h)ome).*(w|W)orld.*(\.|!)$

这似乎工作正常。(见 regex101

现在假设我想排除“家”和“世界”这两个词以相反顺序出现的句子:

世界在身后,家在前!

我试过这个(regex101):

^.*(?<!(w|W)orld).*(H|h)ome.*(\.|!)$

这个不行... :-(

谁能解释一下如何通过消极的后视或其他方式来实现它?...

4

2 回答 2

1

我将您的要求表述为:

^(?i)(?!.*\bworld\b.*\bhome\b).*\bhome\b.*\bworld\b.*$

演示

模式 asserta 开头的否定前瞻,没有按该顺序world跟随。home

于 2021-07-18T07:55:15.180 回答
0

正负前瞻/后视取决于您的正则表达式处理器。并非所有处理器都支持此功能。

如果我没记错的话,很少实施负面的后视。

我已经在https://regexr.com尝试过你的正则表达式,它似乎工作正常。

于 2021-07-18T07:54:39.923 回答