正则表达式比较一条记录和前一条记录
regular expression comparing a record with a previous record
我需要一个正则表达式来在文本文件中搜索并找到以 "CD" 开头的每一行,而前一行不以 "CR".
开头
在下面的示例数据中,请注意末尾的 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
谢谢!
看来你可以使用
(?:\G\R?|^(?!CR).*\R)\KCD.*
详情:
(?:\G\R?|^(?!CR).*\R)
- 文档的开头或上一个成功匹配的结尾 (\G
),后跟一个可选的换行符 (\R?
),或者一行的开头 (^
) 后不跟 CR
((?!CR)
) 后跟除换行符以外的任何 0+ 字符 (.*
) 后跟换行符 (\R
)
\K
- 匹配重置运算符丢弃目前匹配的文本
CD.*
- CD
后跟除换行符以外的任何 0+ 个字符(.
匹配换行符 必须关闭)
我需要一个正则表达式来在文本文件中搜索并找到以 "CD" 开头的每一行,而前一行不以 "CR".
开头在下面的示例数据中,请注意末尾的 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
谢谢!
看来你可以使用
(?:\G\R?|^(?!CR).*\R)\KCD.*
详情:
(?:\G\R?|^(?!CR).*\R)
- 文档的开头或上一个成功匹配的结尾 (\G
),后跟一个可选的换行符 (\R?
),或者一行的开头 (^
) 后不跟CR
((?!CR)
) 后跟除换行符以外的任何 0+ 字符 (.*
) 后跟换行符 (\R
)\K
- 匹配重置运算符丢弃目前匹配的文本CD.*
-CD
后跟除换行符以外的任何 0+ 个字符(.
匹配换行符 必须关闭)