【问题标题】:Regex match occurrences only after character sequence正则表达式匹配仅在字符序列之后出现
【发布时间】:2018-02-19 23:06:34
【问题描述】:

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

edward woodward foo edward woodward

/(?<=w)./g 给了我 6 个匹配项

edward woodward foo edward woodward

我只想要foo 之后发生的 3 个匹配项。如何修改正则表达式以缩小搜索范围?

【问题讨论】:

标签: regex pcre


【解决方案1】:

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

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

请参阅regex demo

详情

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

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 2013-02-24
    • 2018-01-09
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多