regex 如何在字符串的末尾捕获数字字符的子字符串?

iih3973s  于 2023-06-25  发布在  其他
关注(0)|答案(3)|浏览(118)
Confirmation number
236GE46326Z21C05
Invoice details
From
Consolidated Text ABCD 1111
To
Test Test Test 2222
Frequency

上面是我正在查找以提取数字字符的文本。
我使用下面的正则表达式来检测“From”下面的字符串。

(?<=From\r\n).+

我需要从字符串中提取“1111”。

lvjbypge

lvjbypge1#

我建议你尝试https://regex101.com/来了解你的正则表达式是如何工作的。
对于你所写的这个例子。你可以使用正则表达式
From.*\n[^\d]*(?<required_number>\d*)\n

lo8azlld

lo8azlld2#

您可以匹配From后跟一个换行符。
然后匹配整个下一行,或者用[^\S\r\n]匹配前面的空白字符,在数字之前没有换行符,或者使用字边界\b来防止部分字匹配。
要获取数字,请使用捕获组。

\bFrom\r?\n.*\b(\d+)$

Regex demo
或者

\bFrom\r?\n.*[^\S\r\n](\d+)$

Regex demo

注意如果From在字符串的开头,则可以追加一个锚^From\r?\n

zour9fqk

zour9fqk3#

您可以使用以下模式。

(?s)From.+?(\d+)$

(?s)将切换到 * 单行 * 模式,导致 * 点 *,.,额外匹配换行符。
?将确保.+匹配到第一次出现的\d
而且,$将确保它是行中\d的最后一个序列。
组1的输出。

1111

相关问题