Regex 正则表达式获取字符串后的文本
我想得到一个字符串后的文本,这个字符串由一个字符串和一个数字组成。我有以下字符串: “付款前的一些文字和总金额:13214欧元签名:” 我想得到“EUR”,但只有“总付款:xxxxx”之后的EUR,因为我可以在其他地方的字符串中包含“xxxxx EUR” 我试过了Regex 正则表达式获取字符串后的文本,regex,vb.net,Regex,Vb.net,我想得到一个字符串后的文本,这个字符串由一个字符串和一个数字组成。我有以下字符串: “付款前的一些文字和总金额:13214欧元签名:” 我想得到“EUR”,但只有“总付款:xxxxx”之后的EUR,因为我可以在其他地方的字符串中包含“xxxxx EUR” 我试过了 (?!<Total payment )(\d+) ([A-Z]){3,} (?!您可以将所需字符串的一部分捕获到捕获组中,同时匹配左侧而不捕获它: Dim my_rx As Regex = New Regex("Total p
(?!<Total payment )(\d+) ([A-Z]){3,}
(?!您可以将所需字符串的一部分捕获到捕获组中,同时匹配左侧而不捕获它:
Dim my_rx As Regex = New Regex("Total payment:\s*\d+\s*([A-Z]{3,})")
Dim my_result As Match = my_rx.Match("Some text before and Total payment: 13214 EUR Signature:")
If my_result.Success Then
Console.WriteLine(my_result.Groups(1).Value) ' => EUR
End If
看
详细信息
总付款:
-文字子字符串(仅匹配以确保上下文正确)
\s*
-0+空格字符
\d+
-1+位
\s*
-0+空格字符
([A-Z]{3,})
-捕获组1(m.Groups(1).Value
):3个或更多大写ASCII字母
注意:您也可以使用命名的捕获组:Total payment:\s*\d+\s*(?[a-Z]{3,})
,然后使用m.groups(“货币”).value访问值
请参阅。您需要使正则表达式不贪婪,这很容易。这应该是可行的
Total payment.*?EUR
在*之后添加?强制它只匹配第一个匹配的EUR。
它还将匹配之前的文字字符串。?和。?匹配文字字符串和第一个EUR实例之间的所有内容。尝试@WiktorStribiżew我不想使用lookbehind是否始终有三个字符,例如EUR、USD或GBP等?@AndrewMorton是的,我只想获得currency@Rubyen对,在圣彼得堡的一个了望台艺术的模式不是最好的主意,我张贴了一个答案,其中有一个捕获组。是的,这是有点好,但我不想得到的numbers@Rubyen然后不要捕获它们。使用“总付款:\s*\d+\s*([A-Z]{3,})”
。请参阅。