我有类似于以下的字符串:
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
\d+
与 RegExp.Global=True
将找到所有数字块,然后在循环处理所有匹配项后仅打印最长的块。
关于regex - 从字符串中提取最大的数字序列(正则表达式,还是?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49363411/