Regex 如何使用正则表达式从字符串中提取所有数字?
我有一个表表1和一个字段电话。这是一个字符串字段,除数字外,还包含其他字符。我想从字符串中提取所有数字 我尝试了“[0-9]+”,但我只得到每行的第一组数字。 我尝试在线搜索,但我尝试的正则表达式与access不兼容。 请解释一下正则表达式。谢谢 这是我正在使用的VBA正则表达式函数:Regex 如何使用正则表达式从字符串中提取所有数字?,regex,ms-access,vba,Regex,Ms Access,Vba,我有一个表表1和一个字段电话。这是一个字符串字段,除数字外,还包含其他字符。我想从字符串中提取所有数字 我尝试了“[0-9]+”,但我只得到每行的第一组数字。 我尝试在线搜索,但我尝试的正则表达式与access不兼容。 请解释一下正则表达式。谢谢 这是我正在使用的VBA正则表达式函数: Function myRegex(ByRef myString As String, ByVal pattern As String) As String Dim rgx As New RegExp
Function myRegex(ByRef myString As String, ByVal pattern As String) As String
Dim rgx As New RegExp
Dim colMatches As MatchCollection
With rgx
.pattern = pattern
.ignoreCase = True
.Global = False
.Multiline = False
Set colMatches = .Execute(myString)
End With
If colMatches.Count > 0 Then
myRegex = colMatches(0).Value
Else
myRegex = ""
End If
End Function
。。。但我只得到每行的第一组数字
第一个问题是.Global=False
意味着只找到第一个匹配项。如果要查找所有匹配项,则需要.Global=True
第二个问题是,函数只返回MatchCollection
中的第一个匹配(colMatches(0)
)。因此,即使将.Global
更改为True
,函数仍将仅返回第一个匹配项。如果要返回包含所有匹配项的字符串,可以在colMatches
中串联所有匹配项的值
下面的函数版本符合我的要求
函数myRegex(ByRef myString作为String,ByVal模式作为String)作为String
将rgx设置为新的RegExp
Dim colMatches作为MatchCollection
我想我会坚持多久
作为字符串的暗输出
使用rgx
.模式
.IgnoreCase=True
'.Global=False
.Global=True
.Multiline=False
Set colMatches=.Execute(myString)
以
如果colMatches.Count>0,则
'myRegex=colMatches(0).Value
对于i=0到(colMatches.Count-1)
strOutput=strOutput&colMatches(i).Value
下一个
”“否则呢
'myRegex=“”
如果结束
myRegex=strOutput
端函数
然而,我认为这是一个更简单的方法。这里的策略是丢弃任何不是数字的字符。将该函数与您的函数进行比较 您可以粘贴正在运行的代码段以执行正则表达式。您可能需要运行regex mutliple时间,而不仅仅是更改pattern@HansUp,“^\d”只匹配字符串的开头。@Rhumborl,我已经添加了代码,但我确实不想多次运行。我确信必须有一个正则表达式才能从字符串中提取所有数字。
OnlyDigits(“111Qs 233322”)
返回字符串“111233322”。如果这不是你想要的,请澄清你想要的。