从文件中的行中,我想找到那些
^(202\d)
开头,例如2022
或2023
[A-Z]{1,4}
或最多3个数字\d{1,3}
和至少一个字母[A-Z]{1}
例如ABCD
或A123
或1A23
或123A
A
或R
例子
YYYYxxxxA // find rows that match 2022xxxxA
2022A150A // relevant matches
2022B260A // "
20223A70A // "
20224B84A // "
20224B A // not relevant due to spaces \s\s
20221234A // not relevant due to 4 digits and no letter
在可视化工作室代码中,我测试了javascript正则表达式(请参阅我 demo@regex101.com)
这两个正则表达式似乎有效
2022(\d\D\w\w|\D\d\w\w|\d\d\D\w|\d\d\w\D|\D\D\D\D)A
// or
^(202\d)(\d{0,3}[A-Z]{1,4}|[A-Z]{1,4}\d{1,3})([\dA-Z]{0,4})A
202
,\d
匹配一个数字(相当于 [0-9])\d
匹配一个数字(相当于 [0-9]){0,3} 匹配 0 到 3 次之间的前一个标记|
是第一个替代方案的变体我想知道是否有比
^(202\d)(\d{0,3}[A-Z]{1,4}|[A-Z]{1,4}\d{1,3})([\dA-Z]{0,4})A
for (xxxx)
应包含至少1个大写字母且不超过3个数字?
用我的演示测试
您的最终正则表达式也将匹配下面两行,因为它允许第二部分最多有3 ^ 4 ^ 4个字符,也只有1个字母:
2022999BBBB9999A
2022BA
对于必须包含 4 个字母数字(至少包含一个字母)的部分,您可以按如下方式表示该条件:
喜欢这个:
^(202\d)(?=.{0,3}[A-Z])([\dA-Z]{4})A