2015-05-22 6 views
1

Учитывая строку с числовым значением в ней, мне нужно извлечь это значение и присвоить его переменной. Я использую следующий для достижения этой цели:Извлечение числа из строки с использованием 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 вместо 4,308 или 4308.

Как я могу изменить свое регулярное выражение для извлечения целого числа независимо от того, содержит ли он запятые и/или точки?

ответ

4

Вы можете добавить запятую и, возможно, точку в классе символов:

Dim m as Match = Regex.Match(str, "[\d.,]+") 

Это один слишком сырой, так как это позволяет строк, как .,567,...

Вы должны использовать

Dim m as Match = Regex.Match(str, "\d+(?:[.,]\d+)*") 

Это будет соответствовать номера, как 1, 1,235, 2,456.56, 1,254,456.45 и т.д.

См RegexStorm demo

Смежные вопросы