检查正则表达式子模式是否包含先前的子模式?

Xeo*_*oss 3 regex recursion

我想知道是否有办法检查给定序列的子模式匹配,以便我可以阻止它.

例如,假设我想捕获除了重复早期捕获之外的所有内容.因此,如果我有句子,[word plus word]则以下内容应该捕获所有内容(word plus)直到第二次出现word.

(\w+)[^\1]+
Run Code Online (Sandbox Code Playgroud)

第一次(\w+)捕获word.第二个[^...]捕获组尝试排除它(它是\1之前捕获的),但它只适用于字符 - 而不是子模式捕获.

那么反正这样做呢?

Qta*_*tax 9

你可以使用这样的模式:

(\w+)(?:(?!\1).)*
Run Code Online (Sandbox Code Playgroud)

使用负前瞻来断言(在每个字符处)先前匹配的单词不包含在子表达式中.