2016-06-09 3 views
0

У меня есть супер накрученные наборы данных, без реального шаблона, все, что мне нужно, это найти цифровые последовательности от 3 до 7 цифр, это то, что я пытался, но совпадал. граф всегда дает 0Regex, чтобы найти все цифры в последовательности

Function catchNumbers(inSt As String) 

Dim regex As Object, str As String 
Set regex = CreateObject("VBScript.RegExp") 

With regex 
    .Pattern = "\d{3-7}" 
    .Global = True ' 
    .IgnoreCase = True 
End With 

inSt = Replace(inSt, ".", "") 

Set matches = regex.Execute(inSt) 

Debug.Print (matches.Count()) 

If matches.Count() > 0 Then 
    For Each StrFound In matches 
     Debug.Print (TypeName(StrFound) & " : " & StrFound) 
     str = str & " " & StrFound 
    Next StrFound 
Else 
    str = "" 
End If 

If Left(str, 1) = " " Then 
    str = Right(str, Len(str) - 1) 
End If 

Debug.Print (str) 

catchNumbers = str 

End Function 

Пример наборов данных:

25.802; 24.052/Guaiba 25.802; 24.052/Guaiba 25,859, L. 3-Ac, Fls.5; 25,862, L. 3-Ac, Fls. 6; 25,865, L. 3-Ac, Fls. 7; 25,856, L. 3-Ac, Fls. 4 25,859, L. 3-Ac, Fls.5; 25,862, L. 3-Ac, Fls. 6; 25,865, L. 3-Ac, Fls. 7; 25,856, L. 3-Ac, Fls. 4

+0

Используйте запятую вместо дефиса: '\ D {3,7}' – trincot

+0

@trincot О Гоша – Mojimi

+0

[Этот сайт] (http://regexr.com /) полезно проверить ваши строки – Sgdva

ответ

2

Используйте запятую вместо дефиса: \d{3,7}

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