Правильное регулярное выражение для обнаружения изменений в конфигурации MySQL - PullRequest
0 голосов
/ 05 декабря 2018

Мне нужно перехватить все переопределенные переменные в my.cnf

В моем случае они выглядят как

#basedir        = /usr/local/mysql
basedir     = /usr

Так что мне нужно извлечь все переопределенные параметры.Критерии поиска, чтобы параметр был переопределен: в файле есть обе строки, начинающиеся с #param и param.

Пожалуйста, посоветуйте мне правильное регулярное выражение.

1 Ответ

0 голосов
/ 06 июня 2019

Вы можете использовать

^\h*#\K([_$a-zA-Z0-9]+)(?=\s+=\s.+\R\h*\1\s)

См. Демонстрационный пример regex

Чтобы сработало регулярное выражение, используйте модификатор m и прочитайте файл в памятькак одна строка (вы можете сделать это с -0777 опциями).

Детали шаблона

  • ^ - начало строки
  • \h* - 0+ горизонтальных пробелов
  • # - # char
  • \K - оператор сброса совпадений
  • ([_$a-zA-Z0-9]+) - группа1: любые 1 или более букв ASCII, цифр, _ и $
  • (?=\s+=\s.+\R^\h*\1\s) - за которыми сразу следует:
    • \s+ - 1+ пробелов
    • = - = символ
    • \s - пробел
    • .+ - 1+ символов, кроме символов разрыва строки
    • \R- последовательность разрыва строки
    • \h* - 0+ горизонтальных пробелов
    • \1 - то же значение, что и в группе 1
    • \s - пробелы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...