MS Access将方括号之间的所有文本提取到新查询

时间:2019-03-04 22:29:17

标签: regex database ms-access access-vba

我有一个多行字符串变量,可容纳一个大数据字符串。其中一些数据放在方括号之间。

示例数据变量:

[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运行时错误。如果我使用“ [[[[^]] +)]”作为模式,则可以使用,但不会删除括号...

1 个答案:

答案 0 :(得分:1)

以下正则表达式应该起作用:

/(?<=\[).*?(?=\])/gm

请参见Regex Demo,了解正在使用的正则表达式。

正则表达式细目:

  • (?<=\[):积极回望
  • \[:逐字匹配字符 [(区分大小写)
  • .*?:延迟(尽可能少地)匹配任何字符(行终止符除外)
  • (?=\]):积极向前看
  • \]:逐字匹配字符] (区分大小写)
  • gm:全局和多行修饰符