给定一个带有数值的字符串,我需要提取该值并将其赋值给变量.我使用以下内容来实现:
Dim m as Match = Regex.Match(str, "\d+")
If m.Success Then
test = m.Groups(0).Value
End If
Run Code Online (Sandbox Code Playgroud)
它适用于像这样的字符串:
This is a 4308 number
Run Code Online (Sandbox Code Playgroud)
我被4308提取了.但是,如果数值包含逗号或点:
This is a 4,308 number
Run Code Online (Sandbox Code Playgroud)
然后,提取的值4代替4,308或4308.
如何修改我的正则表达式以检索整数,无论它是否包含逗号和/或点?
您可以在字符类中添加逗号和点数:
Dim m as Match = Regex.Match(str, "[\d.,]+")
Run Code Online (Sandbox Code Playgroud)
这个太粗糙,因为它允许字符串.,567,...
你应该用
Dim m as Match = Regex.Match(str, "\d+(?:[.,]\d+)*")
Run Code Online (Sandbox Code Playgroud)
这将匹配相同的数字1,1,235,2,456.56,1,254,456.45,等.
请参阅RegexStorm演示