我有一个文本文件,其中每行包含一个记录字段。每行都有一个字段标识符,以V010开头,以V999结尾。
我想搜索包含V056字段的所有记录(此时我正在使用插件http://www.phdesign.com.au/programming/toolbucket-multi-line-search-plugin-for-notepad/使用Notepad ++)。
如何开始设置多行Regex。我试图了解正则表达式的力量,但这次多线模式是一个难点。
我在想这样的事情:
^V010.+
点是除新行之外的任何字符,因此添加'\ r \ n'将带我到:
^V010.+\r\n
接下来我想选择一个完整的记录,所以如果V999是下一行,那么添加V999 $应该这样做,除了中间有一个未知数量的行,所以在de'。+ \ r \ n'周围添加括号应该这样做特技。
^V010(.+\r\n)+V999$
除了现在选择第一个V010到最后一个V999。如何选择1个单一记录。从那里我可以进一步搜索单个记录是否包含V056字段。
文件示例:
A001
A999
V010 V
V020 XXXXXXXXXXX
V021 XXXXXXXXXXX
V040 XXXXX
....
V200 NL
V999
V010 V
V020 XXXXXXXXXXX
....
V999
Z001
Z999
答案 0 :(得分:1)
这个应该符合您的需求:
V010((.|\n|\r|\r\n)(?!V999))*?V056(.|\n|\r|\r\n)*?V999
(demo)
(.|\n|\r|\r\n)
表示“任何字符(包括新行) (?!V999)
表示“未跟V999
” *?
表示“匹配尽可能短”(而*
表示“尽可能匹配”)