Мне нужно использовать Perl-совместимое регулярное выражение для соответствия нескольким строкам, которые появляются на нескольких строках в файле.PCRE Regex - Как вернуть совпадения с многострочной строкой, ищущей несколько строк в любом порядке
Матчи должны отображаться в любом порядке (server servernameA.company.com, а затем servernameZ.company.com, а затем servernameD.company.com или любая комбинация заказов из трех). Примечание: Все совпадения появятся в начале каждой строки.
В ходе тестирования с grep -P
, я даже не был в состоянии произвести матч на простых строковых терминов, которые появляются в любом порядке по новым линиям (даже при использовании /s
и /m
модификаторов). Я довольно уверен в чтении. Мне нужно утверждение с открытым исходным кодом, но образцы, которые я использовал, не дали мне соответствия даже после анализа каждого бита регулярного выражения, чтобы убедиться, что он имеет отношение к моему сценарию.
Поскольку мне нужно поддержать это в Production, я бы хотел, чтобы простой и относительно прямой интерпретируемый ответ.
Пример ввода
irrelevant_directive = 0
# Comment
server servernameA.company.com iburst
additional_directive = yes
server servernameZ.company.com iburst
server servernameD.company.com iburst
# Additional Comment
final_directive = true
Expectation
Регулярное выражение должно соответствовать и вернуть 3 строки, начинающиеся с сервера (которые появляются в любом порядке), если и только если есть идеальный матч для strings'serverA.company.com ',' serverZ.company.com 'и' serverD.company.com ', за которым следует iburst. Все 3 строки должны быть включены.
Наконец, если ответ (или очень похожая форма ответа) может адресовать проверку строк в любом порядке на одном линиях, это было бы очень полезно. Например, если у меня строка с одной строкой: preauth param audit=true silent deny=5 severe=false unlock_time=1000 time=20ms
, и я хочу, чтобы условия deny=5
и time=20ms
отображались в любом порядке и, если да, совпадали.
Заранее благодарю вас за помощь.
Вы говорите о PCRE или о программе Perl? – simbabque
Спасибо за быстрый ответ и посмотрим на это. PCRE специально.Я буду использовать команду с 'grep -P'. Обновите, когда я добавил новый короткий раздел о ожидаемом выходе регулярного выражения, которое я ранее забыл. –
Тогда, пожалуйста, не связывайтесь с Perl. Я удалю тег. Есть решения для этого с полноценной программой, но делать это в одном регулярном выражении будет непросто. – simbabque