2016-06-09 65 views
0

我有一個超級搞砸的數據集,沒有真正的模式,我需要的是從3到7位數字找到數字序列,這是我一直在嘗試但匹配。計數總是給數據集的0正則表達式找到序列中的所有數字

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}