Regex: Найти в файле слово, у которого нет другой цели? - PullRequest
0 голосов
/ 05 февраля 2019

Как мне найти в файле слово, у которого нет определенного целевого текста перед ним?

Допустим, я хочу найти "setting3" , а не , перед которым стоит правая квадратная скобка "]" (которая обозначает заголовок).Этот следующий файл не пройдет этот тест из-за [header]:

[header] #can be named anything
setting1=True
setting2=various setting values, can include any type of text
setting3=1

Но файл с потерянной настройкой должен совпадать:

setting3=1

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

Для контекста это установить правило с помощью инструмента, который предлагает только одну строку регулярного выражения (Ansible, который, я думаю, использует движок регулярных выражений Python).Я не верю, что у меня есть доступ к специальным настройкам (глобальным и т. Д.)

1 Ответ

0 голосов
/ 05 февраля 2019

Возможно, вы сможете использовать следующее регулярное выражение:

^[^[]*setting3=1

Оно соответствует от начала файла до нужного параметра, но соответствует только символам, которые не [, который гарантирует, что он будет соответствовать настройке, которую вы ищете, если ему не предшествовал заголовок, так как они содержат [.

Обратите внимание, что это может пропустить некоторые настройки, которые должны соответствовать, в частности, если комментарии, предшествующие настройке, содержат символ [.

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