我有一个多行字符串变量,可容纳一个大数据字符串。其中一些数据放在方括号之间。
示例数据变量:
[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运行时错误。如果我使用“ [[[[^]] +)]”作为模式,则可以使用,但不会删除括号...
答案 0 :(得分:1)
以下正则表达式应该起作用:
/(?<=\[).*?(?=\])/gm
请参见Regex Demo,了解正在使用的正则表达式。
正则表达式细目:
(?<=\[)
:积极回望\[
:逐字匹配字符 [(区分大小写).*?
:延迟(尽可能少地)匹配任何字符(行终止符除外)(?=\])
:积极向前看\]
:逐字匹配字符] (区分大小写)gm
:全局和多行修饰符