正则表达式(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
- 匹配一个数字。
使用 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
- 匹配一个数字。