在文件中查找(正则表达式) - 返回连续行

时间:2016-03-16 14:40:41

标签: regex windows notepad++ findinfiles

我需要在文件中连续写入三行时返回所有出现的内容。我正在寻找以下内容:

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 =)

enter image description here

查找内容:(FieldName=|Operator=|Value)也很接近,但显然没有说明这些行需要连续的事实(“FieldName =”后跟“Operator =”后跟“Value =”)并且也返回所有单次出现。

1 个答案:

答案 0 :(得分:1)

您可以使用^FieldName=[^\n\r]*[\n\r]+Operator=[^\n\r]*[\n\r]+Value=[^\n\r]*来匹配您的3个结果:

  • ^FieldName=[^\n\r]*[\n\r]+匹配一行的开头,后跟FieldName=,任意数量的非换行符,然后是一个或多个linbreaks。当您使用Windows标记问题时,您可以将[\n\r]+替换为\r\n,这也可以防止空行跳入匹配(此时可能会出现此情况)
  • Operator=[^\n\r]*[\n\r]+对于Operator-Line
  • 基本相同
  • Value=[^\n\r]*对于Value-Line来说也是一样的,这次没有终点线路

如评论中所述,这只会显示查找文件概览中的第一个匹配行,但您可以双击它,以显示整个匹配。