0

I need to return all occurrences of when three lines are consecutively written in a file. I'm looking for the following:

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

Example File Content

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

To do this, I have been trying to use Notepad++ Find in Files functionality but I cannot seem to get the correct regular expression.

Here is what I've tried (in this case I'm assuming the two lines after FieldName= will always be Operator= and Value=)

enter image description here

Find what: (FieldName=|Operator=|Value) is also close, but obviously doesn't account for the fact that these lines need to be consecutive ("FieldName=" followed by "Operator=" followed by "Value=") and returns all single occurrences as well.

4

1 に答える 1

1

^FieldName=[^\n\r]*[\n\r]+Operator=[^\n\r]*[\n\r]+Value=[^\n\r]*3 つの連続する行を一致させるために使用できます。

  • ^FieldName=[^\n\r]*[\n\r]+は、行頭に一致し、その後にFieldName=、任意の数の非改行、そして 1 つ以上の改行が続きます。質問に Windows でタグを付けたので、 に置き換えることができる可能性があります。これ[\n\r]+により\r\n、空の行が一致に飛び込むのを防ぐこともできます (現時点では可能です)。
  • Operator=[^\n\r]*[\n\r]+Operator-Lineでも基本的に同じです
  • Value=[^\n\r]*Value-Line についても同じですが、今回は最後の改行がありません

コメントで述べたように、これはファイル内検索の概要で最初に一致した行のみを表示しますが、それをダブルクリックすると、一致全体が表示されます。

于 2016-03-16T16:18:08.497 に答える