使用regex和vb.net从字符串中提取数字

Cod*_*ess 1 regex vb.net

给定一个带有数值的字符串,我需要提取该值并将其赋值给变量.我使用以下内容来实现:

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,3084308.

如何修改我的正则表达式以检索整数,无论​​它是否包含逗号和/或点?

Wik*_*żew 5

您可以在字符类中添加逗号和点数:

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演示