Найти в файлах (регулярное выражение) — возврат последовательных строк

Мне нужно вернуть все случаи, когда в файл последовательно записываются три строки. Я ищу следующее:

FieldName=<some name>
Operator=<some operator>
Value=<some value>

Пример содержимого файла

MatchAny=FALSE
FieldValue=TRUE
Operator=Is less than
TotalFields=1
[OutputTarget0SelField0]
FieldName=ORIG-DATE
Operator=Is greater than
Value=20000101
[OutputTarget1]

Для этого я пытался использовать функцию «Найти в файлах» в Notepad++, но не могу найти правильное регулярное выражение.

Вот что я пробовал (в этом случае я предполагаю, что две строки после FieldName= всегда будут Operator= и Value=)

введите здесь описание изображения

Найдите что: (FieldName=|Operator=|Value) тоже близко, но, очевидно, не учитывает тот факт, что эти строки должны быть последовательными ("FieldName=", за которым следует "Operator=", за которым следует "Value="), и также возвращает все одиночные вхождения.


person Billup970    schedule 16.03.2016    source источник
comment
Не могли бы вы попробовать ^FieldName=[^\n\r]*[\n\r]+Operator=[^\n\r]*[\n\r]+Value=[^\n\r]*?   -  person Sebastian Proske    schedule 16.03.2016
comment
@SebastianProske спасибо за ваш ответ. Кажется, это работает, но на выходе отображается только начальная строка каждого вхождения... что может быть ограничением функциональности поиска в файлах. Так, например, три строки появляются последовательно в строке 633, но вывод показывает только строку FieldName: Строка 633: FieldName=ORIG-DATE Строка 1101: FieldName=DATE Строка 1313: FieldName=DATE   -  person Billup970    schedule 16.03.2016
comment
Если вы дважды щелкнете по одному из совпадений, оно должно фактически отметить полное совпадение в файле? Не могли бы вы попробовать это, пожалуйста?   -  person Sebastian Proske    schedule 16.03.2016
comment
Ой. Я понимаю. Я не понимал, как это работает. Еще раз спасибо за Ваш ответ!   -  person Billup970    schedule 16.03.2016


Ответы (1)


Вы можете использовать ^FieldName=[^\n\r]*[\n\r]+Operator=[^\n\r]*[\n\r]+Value=[^\n\r]* для соответствия вашим 3 последовательным строкам:

  • ^FieldName=[^\n\r]*[\n\r]+ соответствует началу строки, за которым следует FieldName=, любое количество неразрывов строки, а затем один или несколько разрывов строки. Поскольку вы пометили свой вопрос с помощью Windows, вы можете заменить [\n\r]+ на \r\n, это также предотвратит попадание пустых строк в совпадение (что на данный момент было бы возможно)
  • Operator=[^\n\r]*[\n\r]+ в основном то же самое для строки оператора
  • Value=[^\n\r]* снова то же самое для Value-Line, на этот раз без завершающих разрывов строки

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

person Sebastian Proske    schedule 16.03.2016