我想查找此字符串中出现的所有字符,但只查找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场比赛。我如何修改正则表达式以缩小搜索范围?
答案 0 :(得分:2)
您可以将以下正则表达式与PCRE引擎一起使用:
(?:\bfoo\b|\G(?!^))[^w]*w\K.
请参阅regex demo。
<强>详情
(?:\bfoo\b|\G(?!^))
- 整个字foo
(\bfoo\b
)或(|
)上一场比赛的结尾(\G(?!^)
)[^w]*
- 除w
w
- w
字符\K
- 匹配重置运算符,丢弃目前为止匹配的所有文本.
- 任何字符(除了换行符之外,如果您需要将.
与(?s)
匹配,请在模式开头添加.
或将(?s:.)
替换为{{ 1}})