MS Access Извлечь весь текст в скобках для нового запроса - PullRequest
0 голосов
/ 05 марта 2019

У меня есть многострочная строковая переменная, которая содержит большую строку данных.Некоторые из этих данных заключены в квадратные скобки.

Пример переменной данных:

[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 голосов
/ 05 марта 2019

Должно работать следующее регулярное выражение:

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

См. Демонстрация регулярного выражения регулярного выражения в действии.

Распределение регулярного выражения:

  • (?<=\[): положительный взгляд за спиной
  • \[: соответствует символу [ буквально (с учетом регистра)
  • .*?: соответствует любомусимвол (кроме ограничителей строки) лениво (как можно меньше)
  • (?=\]): положительный взгляд
  • \]: буквально соответствует символу ] (чувствительно к регистру))
  • gm: глобальные и многострочные модификаторы
...