找不到正确的正则表达式解决方案

找不到正确的正则表达式解决方案

我的内容如下:

001 B OR 06K24b 01 TCP SC C 02
001 B CC 12K48b 99 BCP SC A 02 1982-11-09
001 B OR 06K24b 01 TCP SC C 02

我希望我的正则表达式匹配第 2 行,但不匹配第 1 行或第 3 行。

我认为我需要的是积极的回顾,但我不确定。即使我是正确的,我也不知道如何正确地应用它。

我尝试了以下方法:

^(?<=([0-9]{3} [A-Z] [A-Z]{2} ..K..b [0-9]{2} [A-Z]{3} [A-Z]{2} [A-Z] [0-9]{2})).*

和积极前瞻:

^(?!([0-9]{3} [A-Z] [A-Z]{2} ..K..b [0-9]{2} [A-Z]{3} [A-Z]{2} [A-Z] [0-9]{2}))$

请指导我找到正确的解决方案。谢谢!

答案1

由于第 2 行以类似日期的内容结尾,因此您可以尝试以下正则表达式:

^.+\d{4}-\d{2}-\d{2}$

它测试一行是否以四位数字结尾,后跟一个破折号、两位数字、一个破折号和两位数字。

答案2

这个正则表达式重新利用了你的大部分正则表达式:

^[0-9]{3} [A-Z] [A-Z]{2} ..K..b [0-9]{2} [A-Z]{3} [A-Z]{2} [A-Z] [0-9]{2} [0-9].*

在线演示

正则表达式匹配如下:

节点 解释
^ 字符串的开头
[0-9]{3} '0' 至 '9' 中的任意字符(3 次)
' ' 空间
[A-Z] 'A' 至 'Z' 中的任意字符
' ' 空间
[A-Z]{2} 'A' 至 'Z' 中的任意字符(2 次)
' ' 空间
. 除 \n 之外的任意字符
. 除 \n 之外的任意字符
K
. 除 \n 之外的任意字符
. 除 \n 之外的任意字符
b ‘b’
[0-9]{2} '0' 至 '9' 中的任意字符(2 次)
' ' 空间
[A-Z]{3} 'A' 至 'Z' 中的任意字符(3 次)
' ' 空间
[A-Z]{2} 'A' 至 'Z' 中的任意字符(2 次)
' ' 空间
[A-Z] 'A' 至 'Z' 中的任意字符
' ' 空间
[0-9]{2} '0' 至 '9' 中的任意字符(2 次)
' ' 空间
[0-9] '0' 至 '9' 中的任意字符
.* 除 \n 之外的任意字符(0 次或更多次(匹配尽可能多的次数))

相关内容