Regex 正则表达式(PCRE):匹配包含特定字符串的行之后的行中的所有数字
使用PCRE,我只想捕获某个字符串出现的行之后的行中的所有数字。假设字符串是“STRING99”。例如: 汽车房45bRegex 正则表达式(PCRE):匹配包含特定字符串的行之后的行中的所有数字,regex,pcre,Regex,Pcre,使用PCRE,我只想捕获某个字符串出现的行之后的行中的所有数字。假设字符串是“STRING99”。例如: 汽车房45b 22只狗1只猫 女6男 在这种情况下,期望的结果是: 221 但是,正如前一段时间所问的类似问题一样,当时我们试图在字符串出现的同一行()中捕获数字。虽然问题是相似的,但我不认为答案是相似的,如果有答案的话。在这种情况下,使用换行锚点的方法不起作用 我正在寻找一个没有任何其他编程代码的正则表达式。使用两个连续的正则表达式操作很容易完成,但这不是我想要的。也许您可以尝试: (?:
22只狗1只猫
女6男
在这种情况下,期望的结果是: 221 但是,正如前一段时间所问的类似问题一样,当时我们试图在字符串出现的同一行()中捕获数字。虽然问题是相似的,但我不认为答案是相似的,如果有答案的话。在这种情况下,使用换行锚点的方法不起作用 我正在寻找一个没有任何其他编程代码的正则表达式。使用两个连续的正则表达式操作很容易完成,但这不是我想要的。也许您可以尝试:
(?:\bstring99\b.*?\n|\G(?!^))[^\d\n]*\K\d
在线查看
-打开非捕获组:(?:
-字面上匹配单词边界之间的“string99”\bstring99\b
-延迟匹配到(包括)最近的换行符*?\n
-或:|
-在上一个匹配的结尾处断言位置,但使用负前瞻防止它成为第一个匹配的字符串的开头\G(?!^)
-关闭非捕获组)
-匹配0+非数字/换行符[^\d\n]*
-重置报告匹配的起点\K
-匹配一个数字\d
- 也许你可以试试:
(?:\bstring99\b.*?\n|\G(?!^))[^\d\n]*\K\d
在线查看
-打开非捕获组:(?:
-字面上匹配单词边界之间的“string99”\bstring99\b
-延迟匹配到(包括)最近的换行符*?\n
-或:|
-在上一个匹配的结尾处断言位置,但使用负前瞻防止它成为第一个匹配的字符串的开头\G(?!^)
-关闭非捕获组)
-匹配0+非数字/换行符[^\d\n]*
-重置报告匹配的起点\K
-匹配一个数字\d
*
匹配行的其余部分,并在结尾处匹配1+位:-)+1您还可以使用贪婪的*
匹配行的其余部分,并在结尾处匹配1+位:-)+1