我有类似于以下内容的字符串:
4123499-TESCO45-123
every99999994_54
我想分别提取每个字符串中最大的数字序列:
4123499
99999994
我以前尝试过正则表达式(我使用的是VB6)
Set rx = New RegExp
rx.Pattern = "[^\d]"
rx.Global = True
StringText = rx.Replace(StringText, "")
这让我中途,但它只删除非数字值,我最终得到第一个字符串,如下所示:
412349945123
我能否找到一个可以满足我需要的正则表达式,或者我是否必须尝试其他方法?本质上,我的模式必须是不是最长数字序列的任何内容。但我实际上不确定这是否是一个合理的模式。谁能更好地处理正则表达式,告诉我我是否掉进了兔子洞?我很感激任何帮助!
仅通过正则表达式无法获得结果。您将必须提取所有数字块并使用其他编程方法获得最长的数字块。
这是一个例子:
Dim strPattern As String: strPattern = "\d+"
Dim str As String: str = "4123499-TESCO45-123"
Dim regEx As New RegExp
Dim matches As MatchCollection
Dim match As Match
Dim result As String
With regEx
.Global = True
.MultiLine = False
.IgnoreCase = False
.Pattern = strPattern
End With
Set matches = regEx.Execute(str)
For Each m In matches
If result < Len(m.Value) Then result = m.Value
Next
Debug.Print result
The \d+
with RegExp.Global=True
将找到所有数字块,然后在循环处理所有匹配项后仅打印最长的数字块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)