在Windows 7中,除了数字之外,我使用了超过100个具有相同名称的服务 在名称中,我想过滤SVC背后的数字:模式的问题是他没有过滤3位数。所以我的最后一个数字总是99.如何更改模式,所以我可以过滤1,2和3位数?
c:\ program.exe / SVC:1 / STN:9501
c:\ program.exe / SVC:2 / STN:9502 等
c:\ program.exe / SVC:99 / STN:9599
c:\ program.exe / SVC:100 / STN:9600
c:\ program.exe / SVC:101 / STN:9601
等
For Each objService in colListOfServices
Set objRegEx = New RegExp
objRegEx.IgnoreCase = False
objRegEx.Pattern = "/SVC\:(.+)?/STN" ' Set pattern.
If Not IsNull(objService.PathName) Then
If objRegEx.Test(objService.PathName) Then
intID = objRegEx.Execute(objService.PathName)(0).SubMatches(0)
Else
intID = 0
End If
Else
intID = 0
End If
If intID > intMaxID Then
intMaxID = intID
End If
Next
wscript.echo "MaxID: " & intMaxId
答案 0 :(得分:0)
更改此行:
objRegEx.Pattern = "/SVC\:(.+)?/STN" ' Set pattern.
为:
objRegEx.Pattern = "/SVC:(\d{2,3})\s*/STN" ' Set pattern.
在问题的最后一次更改后,正则表达式是:
objRegEx.Pattern = "/SVC:(\d{1,3})\s*/STN" ' Set pattern.
或者,如果数字的位数是不确定的(即从0到无穷大):
objRegEx.Pattern = "/SVC:(\d+)\s*/STN" ' Set pattern.
答案 1 :(得分:0)
我认为没有必要使用RegEx:
Dim d As Double, a() As String
a = Split("Text BLA BLA /SVC:98 /STN", ":")
d = Val(a(UBound(a))) ' Example "98 /STN" to 98.0