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

Regex match occurrences only after character sequence

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

之后的字符
edward woodward foo edward woodward

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

edward woodward foo edw ard woodward

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

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

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

参见regex demo

详情

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