Найти в файлах (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-LineValue=[^\n\r]*
опять-таки то же самое для Value-Line, на этот раз без окончательных разрывов строк
Как указано в комментариях, это покажет вам только первую совпавшую строку в поиске в обзоре файлов, но вы можете дважды щелкнуть по ней, чтобы отобразить все совпадение.