正则表达式仅在字符序列之后匹配

时间:2018-02-19 23:06:35

标签: regex pcre

我想查找此字符串中出现的所有字符,但只查找foo之后的字符

edward woodward foo edward woodward

/(?<=w)./g给了我6场比赛

edw a rd w o odw a rd foo edw a rd w o ODW的 RD

我只想要在foo之后发生的3场比赛。我如何修改正则表达式以缩小搜索范围?

1 个答案:

答案 0 :(得分:2)

您可以将以下正则表达式与PCRE引擎一起使用:

(?:\bfoo\b|\G(?!^))[^w]*w\K.

请参阅regex demo

<强>详情

  • (?:\bfoo\b|\G(?!^)) - 整个字foo\bfoo\b)或(|)上一场比赛的结尾(\G(?!^)
  • [^w]* - 除w
  • 以外的任何0 +字符
  • w - w字符
  • \K - 匹配重置运算符,丢弃目前为止匹配的所有文本
  • . - 任何字符(除了换行符之外,如果您需要将.(?s)匹配,请在模式开头添加.或将(?s:.)替换为{{ 1}})