我需要在文件中连续写入三行时返回所有出现的内容。我正在寻找以下内容:
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 =”)并且也返回所有单次出现。
答案 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来说也是一样的,这次没有终点线路如评论中所述,这只会显示查找文件概览中的第一个匹配行,但您可以双击它,以显示整个匹配。