我有一个包含大数据字符串的多行字符串变量。其中一些数据括在方括号内。
示例数据变量:
[text 123]
text [text] 234 [blah] blah
some more [text 123]
我需要将方括号之间的所有数据提取到查询或表中,所以它将是这样的:
text 123
test
blah
text 123
这是我的VBA代码如下:
Dim dataString As String
dataString = "test [field 1] mroe text [field 2] etc"
Dim searchStr As String
Dim regExp As Object
Dim colregmatch As MatchCollection
Dim match As Variant
searchStr = dataString
Set regExp = CreateObject("vbscript.regexp")
With regExp
.pattern = "(?<=\[)(.*?)(?=\])"
.IgnoreCase = True
.Global = True
.Multiline = True
End With
Set colregmatch = regExp.Execute(searchStr)
If colregmatch.Count <> 0 Then
For Each match In colregmatch
MsgBox match.Value
Debug.Print match.Value
Next
End If
Set colregmatch = Nothing
Set regExp = Nothing
更新:使用此模式时出现5017运行时错误。如果我使用“[([^]] +)]”作为模式,它可以工作,但括号不会删除...
以下正则表达式应该起作用:
/(?<=\[).*?(?=\])/gm
请参阅正则表达式中的Regex Demo。
正则表达式细分:
(?<=\[)
:正面观察\[
:匹配角色[字面意思(区分大小写).*?
:懒惰地匹配任何字符(行终止符除外)(尽可能少)(?=\])
:积极前瞻\]
:匹配字符]字面意思(区分大小写)gm
:全局和多行修饰符