0

我有一个文本文件,其中每一行都包含一个记录字段。每行都有一个以 V010 开头并以 V999 结尾的字段标识符。

我想搜索(此时我正在使用 Notepad++ 使用插件http://www.phdesign.com.au/programming/toolbucket-multi-line-search-plugin-for-notepad/)搜索包含 V056 字段的所有记录.

如何开始设置多行正则表达式。我试图理解正则表达式的力量,但这次多行模式是一个困难。

我在想类似的事情:

^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
4

1 回答 1

1

这应该适合您的需求:

V010((.|\n|\r|\r\n)(?!V999))*?V056(.|\n|\r|\r\n)*?V999演示

  • (.|\n|\r|\r\n)表示“任何字符(包括新行)”
  • (?!V999)意思是“后面没有V999
  • *?表示“尽可能短地匹配”(而*表示“尽可能长地匹配”
于 2013-03-19T16:47:01.490 回答