我很幸运地尝试使用Excel VBA中的RegEx在字符串中提取重复出现的单词。
以下为示例:
我很幸运地尝试使用Excel VBA中的RegEx在字符串中提取重复出现的单词。
以下为示例:
Sub RegExTest()
Dim re As Object
Dim el As Object
Const strText As String = "Fld,Fld,Fld,Fld,Fld,aFld1,bFld,cFld,Fld"
Debug.Print strText
With CreateObject("VBScript.RegExp")
.Global = True
.MultiLine = False
.IgnoreCase = False
.pattern = "(^Fld\,|\,Fld\,|\,Fld$)"
If .Test(strText) Then
Set re = .Execute(strText)
End If
End With
For Each el In re
Debug.Print el
Next
End Sub
Result:
Fld,Fld,Fld,Fld,Fld,aFld1,bFld,cFld,Fld
Fld,
,Fld,
,Fld,
,Fld
我得到的结果(4个元素)不是我期望的(6个元素)。
我确定这是关于错误的模式定义。
有人可以提供正确模式的帮助吗?
预先感谢
答案 0 :(得分:1)
这里的问题是您的比赛重叠。我的意思是Fld\,
中的逗号已经匹配,因此您的第二个Fld将不匹配\,Fld\,
If you double up your commas you can see that you have the appropriate number of matches
这里的解决方案是use lookaheads to capture your matches.,如果由于某些原因绝对需要结尾逗号,只需将它们附加到相关的匹配项中即可。