Regex для многострочных данных в столбце MySQL - PullRequest
1 голос
/ 31 мая 2019

У меня есть столбец, в котором есть XML, и я хочу использовать регулярное выражение для отображения идентификаторов на основе условия.

Часть моих данных XML, скопированных в выходной файл:

  <definitions>^M\
    <definition id=

Я хочу перечислить столбец на основе xmldata с <definitions>, за которым следует <definition id="1"

До сих пор я пробовал разные комбинации регулярных выражений, но безуспешно

where <col> REGEXP '.*<definitions>\r.\s+<definition id="1"'

1 Ответ

2 голосов
/ 31 мая 2019

Обратите внимание, что REGEXP может совпадать в любом месте строки, не обязательно в начале (в отличие от LIKE), поэтому вам не нужно .* в начале.

версии MySQL до 8.xне поддерживает Perl-подобные сокращенные классы, и \s там недопустим.В MySQL 8.x библиотека регулярных выражений ICU поддерживает \s.

. Вы можете использовать в любом MySQL:

where col REGEXP '<definitions>[[:space:]]+<definition id="1"'

Или, если между элементами может отсутствовать пробел:

where col REGEXP '<definitions>[[:space:]]*<definition id="1"'

Выражение в скобках [[:space:]], содержащее [:space:] класс символов POSIX, соответствует любым пробельным символам, и + используется для 1 или более повторений символов, в то время как * для 0 или более из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...