我想知道是否有办法检查给定序列的子模式匹配,以便我可以阻止它.
例如,假设我想捕获除了重复早期捕获之外的所有内容.因此,如果我有句子,[word plus word]则以下内容应该捕获所有内容(word plus)直到第二次出现word.
(\w+)[^\1]+
Run Code Online (Sandbox Code Playgroud)
第一次(\w+)捕获word.第二个[^...]捕获组尝试排除它(它是\1之前捕获的),但它只适用于字符 - 而不是子模式捕获.
那么反正这样做呢?
你可以使用这样的模式:
(\w+)(?:(?!\1).)*
Run Code Online (Sandbox Code Playgroud)
使用负前瞻来断言(在每个字符处)先前匹配的单词不包含在子表达式中.