gpt4 book ai didi

regex - VBA:子匹配正则表达式

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

我有以下代码:

Dim results(1) As String
Dim RE As Object, REMatches As Object
Set RE = CreateObject("vbscript.regexp")

With RE
.MultiLine = False
.Global = True
.IgnoreCase = True
.Pattern = "(.*?)(\[(.*)\])?"
End With

Set REMatches = RE.Execute(str)

results(0) = REMatches(0).submatches(0)
results(1) = REMatches(0).submatches(2)

基本上,如果我传入一个字符串“Test”,我希望它返回一个数组,其中第一个元素是 Test,第二个元素是空白。

如果我传入一个字符串“Test [bar]”,第一个元素应该是“Test”,第二个元素应该是“bar”。

我似乎找不到我的正则表达式的任何问题。我做错了什么?

最佳答案

您需要在正则表达式中添加字符串 anchor 的开头和结尾:

...
.Pattern = "^(.*?)(\[(.*)\])?$"
...

如果没有这些 anchor ,.*? 将始终匹配零个字符,并且由于您的组是可选的,它永远不会尝试回溯并匹配更多字符。

关于regex - VBA:子匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675735/

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