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

问题描述 投票:-1回答:1

我有一个包含大数据字符串的多行字符串变量。其中一些数据括在方括号内。

示例数据变量:

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

regex database ms-access access-vba
1个回答
1
投票

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

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

请参阅正则表达式中的Regex Demo

正则表达式细分:

  • (?<=\[):正面观察
  • \[:匹配角色[字面意思(区分大小写)
  • .*?:懒惰地匹配任何字符(行终止符除外)(尽可能少)
  • (?=\]):积极前瞻
  • \]:匹配字符]字面意思(区分大小写)
  • gm:全局和多行修饰符
© www.soinside.com 2019 - 2024. All rights reserved.