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

使用regex和vb.net从字符串中提取数字,regex,vb.net,Regex,Vb.net,给定一个包含数值的字符串,我需要提取该值并将其分配给变量。我使用以下方法来实现这一点: Dim m as Match = Regex.Match(str, "\d+") If m.Success Then test = m.Groups(0).Value End If 它适用于以下字符串: This is a 4308 number 我提取了4308。但是,如果数值包含逗号或点: This is a 4,308 number 然后,提取的值是4,而不是4308或4308 如何修改正

给定一个包含数值的字符串,我需要提取该值并将其分配给变量。我使用以下方法来实现这一点:

Dim m as Match = Regex.Match(str, "\d+")
If m.Success Then
    test = m.Groups(0).Value
End If
它适用于以下字符串:

This is a 4308 number
我提取了
4308
。但是,如果数值包含逗号或点:

This is a 4,308 number
然后,提取的值是
4
,而不是
4308
4308


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

您可以将逗号和点添加到字符类中:

Dim m as Match = Regex.Match(str, "[\d.,]+")
这个太粗糙了,因为它允许像
、567、…
这样的字符串

你应该使用

Dim m as Match = Regex.Match(str, "\d+(?:[.,]\d+)*")
它将匹配诸如
1
1235
2456.56
1254456.45
等数字