将记录与先前记录进行比较的正则表达式

时间:2017-01-31 19:43:05

标签: regex notepad++ regex-negation regex-lookarounds

我需要一个正则表达式来搜索文本文件,并在前一行不以“CR”开头时找到以“CD”开头的每一行。

在下面的示例数据中,请注意那些CD行没有前面的CR记录的末尾。我需要我的搜索才能找到那些CD行。

HDPM0021535 11ABC CO. D 
CRVA MC OP-MATHER CA 1053 
CD1010 BD5275555
TR+00000001+00000000+0000024760 
HDPM0021535 11ABC CO. D 
CROMNICARE RENO 48308 9475 
CD3055 BO9182000
CROCR OF SANTA ROSA 48218 879 
CD3055 BC9832555
TR+00000002+00000000+0000000695 
HDPM0021535 11ABC CO. D 
CD2037 AF7944888
CD2037 AF7944888
TR+00000002+00000001-0000000089 
TT+00000008+0000196660200

谢谢!

1 个答案:

答案 0 :(得分:0)

好像你可以使用

(?:\G\R?|^(?!CR).*\R)\KCD.*

<强>详情:

  • (?:\G\R?|^(?!CR).*\R) - 文档的开头或上一次成功匹配的结束(\G),后跟可选的换行符(\R?)或行的开头(^ })后跟CR(?!CR))后跟除了换行符(.*)之外的任何0 +字符,后跟换行符(\R
  • \K - 匹配重置操作符,丢弃目前为止匹配的文本
  • CD.* - CD后跟除换行符之外的任何0 +字符( .匹配换行符必须为OFF)

enter image description here