[英]How can I have my Access VBA regex return all possible matches instead of only the first match?
這是我當前的代碼,它只返回第一個匹配項,我需要返回所有匹配項。 例如,[電話號碼1]&[電話號碼2]&[電話號碼3] ...,但僅返回[電話號碼1]。
Public Function X_FIND( _
ByVal SourceString As String, _
ByVal Pattern As String, _
Optional ByVal IgnoreCase As Boolean = True, _
Optional ByVal MultiLine As Boolean = True, _
Optional ByVal MatchGlobal As Boolean = True) As String
Dim re As New regexp
re.MultiLine = MultiLine
re.IgnoreCase = IgnoreCase
re.Global = MatchGlobal
re.Pattern = Pattern
Dim m
For Each m In re.Execute(SourceString)
X_FIND = m.Value
Next
End Function
我在函數中更改了1行:
X_FIND = X_FIND & "," & m.value
我用輸入測試了功能:
Mid(X_FIND("999-999-9998 abckd 999-999-9999", "[0-9]{3}-[0-9]{3}-[0-9]{4}"),2)
返回字符串:
999-999-9998,999-999-9999
如果可能有重復的電話號碼,請使用以下模式:
"([0-9]{3}-[0-9]{3}-[0-9]{4})(?!.*?\\1.*$)"
僅返回每個唯一值的最后一個匹配項。
如果您想確保收益按升序排列,將需要更多代碼,據我所知這並不簡單,並且涉及將唯一的匹配項寫入數組(使用Split函數很容易)或收集並應用冒泡排序或其他一些算法(這是復雜的部分)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.