捕捉负面看后面

Mar*_*łek 5 php regex pcre

我们假设我有以下主题:

abcdef ghidef
Run Code Online (Sandbox Code Playgroud)

我希望匹配以def结尾的字结尾,而不是abc(在这种情况下,它将是ghidef).我怎么能匹配呢?

我用的时候:

(?<!abc)def
Run Code Online (Sandbox Code Playgroud)

我得到了第二名,def但我没有ghi来到这里.

anu*_*ava 3

无需向后看。您可以使用负前瞻:

\b(?!abc)\w*def\b
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

正则表达式分解:

  • \b- 断言字边界
  • (?!abc)- 是否定的前瞻,断言单词不以abcafter \b(单词边界)开头
  • \w*- 匹配0个或多个单词字符
  • def- 单词的结尾文本是def
  • \b- 字边界