Confirmation number 236GE46326Z21C05 Invoice details From Consolidated Text ABCD 1111 To Test Test Test 2222 Frequency
上面是我正在查找以提取数字字符的文本。我使用下面的正则表达式来检测“From”下面的字符串。
(?<=From\r\n).+
我需要从字符串中提取“1111”。
lvjbypge1#
我建议你尝试https://regex101.com/来了解你的正则表达式是如何工作的。对于你所写的这个例子。你可以使用正则表达式From.*\n[^\d]*(?<required_number>\d*)\n
From.*\n[^\d]*(?<required_number>\d*)\n
lo8azlld2#
您可以匹配From后跟一个换行符。然后匹配整个下一行,或者用[^\S\r\n]匹配前面的空白字符,在数字之前没有换行符,或者使用字边界\b来防止部分字匹配。要获取数字,请使用捕获组。
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
^From\r?\n
zour9fqk3#
您可以使用以下模式。
(?s)From.+?(\d+)$
(?s)将切换到 * 单行 * 模式,导致 * 点 *,.,额外匹配换行符。?将确保.+匹配到第一次出现的\d。而且,$将确保它是行中\d的最后一个序列。组1的输出。
(?s)
?
.+
\d
$
1111
3条答案
按热度按时间lvjbypge1#
我建议你尝试https://regex101.com/来了解你的正则表达式是如何工作的。
对于你所写的这个例子。你可以使用正则表达式
From.*\n[^\d]*(?<required_number>\d*)\n
lo8azlld2#
您可以匹配
From
后跟一个换行符。然后匹配整个下一行,或者用
[^\S\r\n]
匹配前面的空白字符,在数字之前没有换行符,或者使用字边界\b
来防止部分字匹配。要获取数字,请使用捕获组。
Regex demo
或者
Regex demo
注意如果
From
在字符串的开头,则可以追加一个锚^From\r?\n
zour9fqk3#
您可以使用以下模式。
(?s)
将切换到 * 单行 * 模式,导致 * 点 *,.,额外匹配换行符。?
将确保.+
匹配到第一次出现的\d
。而且,
$
将确保它是行中\d
的最后一个序列。组1的输出。