gpt4 book ai didi

regex - 从字符串中提取最大的数字序列(正则表达式,还是?)

转载 作者:行者123 更新时间:2023-12-04 23:37:24 25 4
gpt4 key购买 nike

我有类似于以下的字符串:

 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com