我想查找该字符串中出现的 w 之后的所有字符,但只查找 foo
之后的字符
edward woodward foo edward woodward
/(?<=w)./g
给我 6 场比赛
edward woodward foo edward wo强>odward
我只想要 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:.)
)
关于正则表达式仅在字符序列之后匹配出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48875506/