正则表达式(PCRE):匹配包含特定字符串的行之后的一行中的所有数字

Regex (PCRE): Match all digits in a line following a line which includes a certain string

使用 PCRE,我只想捕获出现特定字符串的行之后的一行中的所有数字。假设字符串是“STRING99”。示例:

车串99房45b
22狗1猫
女 6 男

在这种情况下,期望的结果是:

221

然而,正如前段时间问过的类似问题,当时试图捕获出现字符串的同一行中的数字()。虽然问题很相似,但我认为答案(如果有的话)不会相似。使用换行符 ^ 的方法在这种情况下不起作用。

我正在寻找一个没有任何其他编程代码的正则表达式。连续两次正则表达式操作很容易完成,但这不是我要找的。

也许你可以试试:

(?:\bstring99\b.*?\n|\G(?!^))[^\d\n]*\K\d

在线查看demo

  • (?: - 打开非捕获组:
    • \bstring99\b - 逐字匹配单词边界之间的“string99”。
    • .*?\n - 惰性匹配直到(包括)最近的换行符。
    • | - 或者:
    • \G(?!^) - 在上一场比赛结束时断言位置,但使用否定先行防止它成为第一场比赛的字符串的开始。
    • ) - 关闭非捕获组。
  • [^\d\n]* - 匹配 0+ non-digit/newline 个字符。
  • \K - 重置报告匹配的起点。
  • \d - 匹配一个数字。