匹配前 3 个字符的特定字符串和第 4 个字符的任意位置的特定字符串

Match specific string from the first 3 characters and specific string anywhere from the 4th characters

问题 如果前 3 个字符是 YZAYZBYZB,而另一个字符串是位于前 3 个字符之后的任何位置的 NUM12345,我想捕获该字符串。

正则表达式 我使用的是与上述格式不匹配的字符串:

^YZ[ABC]\sNUM12345

示例行如下:

YZC/GH/A1/M,KNUM12345
YZB/M,SD-GG,K*NUM12345/A2
YZA/A1/M,SD-GG,KNUM12345/A2
YZB/M,SD-GG,K*NUM12345/A2/AA
YZA/A1/M,SD-GG,KNUM12345/A2/A2A
YZW/GH/A1/M,KNUM12345
YZR/M,SD-GG,K*NUM12345/A2
YZS/A1/M,SD-GG,KNUM12345/A2
YZT/M,SD-GG,K*NUM12345/A2/AA
YZJ/A1/M,SD-GG,KNUM12345/A2/A2A

我要匹配的行:

YZC/GH/A1/M,KNUM12345
YZB/M,SD-GG,K*NUM12345/A2
YZA/A1/M,SD-GG,KNUM12345/A2
YZB/M,SD-GG,K*NUM12345/A2/AA
YZA/A1/M,SD-GG,KNUM12345/A2/A2A

有人可以帮助更正下面的模式吗?

您可以使用

^YZ[ABC].*NUM12345.*

查看正则表达式演示:

如果你想删除除符合上述模式的行以外的所有行,你可以使用

^(?!YZ[ABC].*NUM12345).*\R*

查看正则表达式演示:

详情:

  • ^YZ[ABC].*NUM12345.* - 字符串的开头,YZA / BC,然后是任何零个或多个字符(换行符除外字符)尽可能多,NUM12345 然后任何零个或多个字符(换行符除外)尽可能多。
  • ^(?!YZ[ABC].*NUM12345).*\R* - 字符串的开头,然后是如果上述模式匹配则匹配失败的否定前瞻,然后是尽可能多的零个或多个字符(换行符除外),然后任何零个或多个换行符序列。