如果在给定序列中多次出现任何模式,如何使用正则表达式进行匹配

Ale*_*eur 6 regex capturing-group

很难正确地说出这个词,但是TL; DR。

我想在给定的文本句子中匹配(假设“树是绿色的”),如果任何空格加倍(或更多)。

例:

"In this text,
THE TREE IS GREEN should not match,
THE  TREE IS GREEN should
and so should THE  TREE   IS GREEN
but  double-spaced  TEXT  SHOULD  NOT BE  FLAGGED outside the pattern."
Run Code Online (Sandbox Code Playgroud)

我最初的方法是

/THE( {2,})TREE( {2,})IS( {2,})GREEN/
Run Code Online (Sandbox Code Playgroud)

但这仅在序列中所有空格均为双精度的情况下才匹配,因此我想使任何组触发完全匹配。我是走错了路吗,还是有办法做到这一点?

kar*_*ick 4

如果有选项,您可以使用负前瞻。

首先匹配您想要失败的句子,在您的情况下,它是“THE TREE IS GREEN”,然后给出想要捕获您想要的结果的最通用的情况。

(?!THE TREE IS GREEN)(THE[ ]+TREE[ ]+IS[ ]+GREEN)
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/EYDU6g/2