|
- Sub Test()
- Dim regex As Object, matchs As Object, match As Object
- Dim x As String, y As String, z As String
- x = "100斤苹果 100元,30斤梨 60元,5斤香蕉 8.5元"
- ' y = "\d+\.?\d*(?=斤)"
- y = "\d+\.?\d*(?!斤)"
- Set regex = CreateObject("VBScript.RegExp")
- With regex
- .Global = True
- .Pattern = y
- Set matchs = .Execute(x)
- Debug.Print "值", "位置", "长度"
- For Each match In matchs
- Debug.Print match.Value, match.firstindex, match.Length
- z = z & match
- Next
- End With
- ' Debug.Print z
- End Sub
-
复制代码
只启用第1个y的赋值句,能理解,返回:
值 位置 长度
100 0 3
30 12 2
5 21 1
但如果只启用第2个y的赋值句,就不理解了。我预想会得到3个的价格数字。可实际却是:
值 位置 长度
10 0 2
100 7 3
3 12 1
60 17 2
8.5 26 3
请问:只启用第2个y的赋值句,为什么会得到如上结果。谢谢!
....已经说了,0匹配?!斤。这个匹配不占位置的[也就是说不会显示为匹配结果,只是用于判断]。
正如(?=exp)
匹配的结果中是不含exp的
|
|