gpt4 book ai didi

regex - "If"内的 VBA 动态正则表达式模式

转载 作者:行者123 更新时间:2023-12-04 20:34:40 24 4
gpt4 key购买 nike

我正在开发一种从文本中提取多种形式的引用编号的工具,并且我正在努力想出一种聪明的方法来迭代不同的 RegEx 模式。我所追求的示例类似于(我在花括号中所追求的伪代码):

Dim regEx as New RegExp
Dim someinput as String

regEx.Pattern = "201[67]\W?\d{6}"

If regEx.Test(someinput) = True Then
foo
Elseif {with regEx.pattern="AB\W?\d{10}" regEx.Test(someinput)} Then
bar
...

这将是几个级别的深度,因为我们有大约十几种可能的格式要检查。目前我能想到的只是为每个定义一个新的正则表达式项目,为每个设置模式,然后一个一个地运行 If->ElseIfs,但必须有更好的方法......我希望!

非常感谢

编辑 只是先发制人, foo 和 bar 会根据输入而有所不同,所以我不能只制作(例如)一组可能的模式并运行检查每个模式然后返回最终的“真/假”

最佳答案

就个人而言,我会循环执行此操作:

Dim regEx As New RegExp
Dim someinput As String
Dim patterns
Dim i As Long
Dim match As Long
patterns = Array("201[67]\W?\d{6}", _
"AB\W?\d{10}")

match = -1
For i = LBound(patterns) To UBound(patterns)
regEx.Pattern = patterns(i)
If regEx.Test(someinput) Then
match = i - LBound(patterns) ' subtract the lower bound to force zero-base
Exit For
End If
Next

Select Case match
Case 0: foo
Case 1: bar
Case Else: MsgBox "No match found"
End Select

关于regex - "If"内的 VBA 动态正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380893/

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