[英]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.