提问人:Bartłomiej Skwira 提问时间:3/30/2019 更新时间:3/30/2019 访问量:360
正则表达式匹配 X 位数字或字母,但不匹配 X 个字母
Regex to match X digits or letters but not X letters in a row
问:
我想提取 7 个字符匹配项。每个字符可以是数字或大写字母,但整个匹配不能只是大写字母。示例:假设我有一个测试字符串,如下所示:
I want this nr A7A3G1A but not this ANTENNA
所以我应该得到但不.匹配两者的正则表达式为:.是否有可能以某种方式不允许只允许大写字母并仍然提取第 1 场比赛?A7A3G1A
ANTENNA
[A-Z0-9]{7}
答:
2赞
Pushpesh Kumar Rajwanshi
3/30/2019
#1
您可以使用此正则表达式,
\b(?![A-Z]{7})[A-Z0-9]{7}\b
在这里,单词边界确保只匹配整个单词,而否定向前看确保匹配的内容不是全部大写字母,并捕获一个包含大写字母和数字混合的七个字符的单词。\b
(?![A-Z]{7})
[A-Z0-9]{7}
1赞
The fourth bird
3/30/2019
#2
另一种选择可能是使用积极的前瞻,然后确保匹配至少 1 位数字。(?=
使用单词边界可防止匹配项成为较大单词的一部分。\b
\b(?=[A-Z0-9]{7}\b)[A-Z0-9]+[0-9][A-Z0-9]*
评论
1234567