Найти в файлах (Regex) - возвращение последовательных строк

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

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++ Find in Files, но, похоже, не могу получить правильное регулярное выражение.

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

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

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

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]+ в основном то же самое для Operator-Line
  • Value=[^\n\r]* опять-таки то же самое для Value-Line, на этот раз без окончательных разрывов строк

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

Другие вопросы по тегам