Python正则表达式匹配指定格式字母数字组合字符串问题求助
可行正则匹配方案
你写的正则失效的核心原因是不符合正则语法规则:重复匹配的次数需要用大括号{}包裹,且要放在待重复的匹配规则之后,你写的6[0-9]实际会匹配「字符6后面跟1位数字」,完全不符合6位数字的匹配需求。
最终正则表达式
如果需要匹配完整字符串(即整个字符串完全符合规则,无多余前后缀),正则为:^\d{6}[A-D]\d{2}R\d{2}$
各部分规则说明
^:匹配字符串的开头,避免前面有多余字符\d{6}:匹配恰好6位数字,等价于[0-9]{6}[A-D]:匹配1个A~D范围内的大写字母,默认匹配1次无需额外标注次数\d{2}:匹配恰好2位数字R:匹配固定大写字母R\d{2}:匹配最后2位数字$:匹配字符串的结尾,避免后面有多余字符
Python使用示例
import re # 编译正则规则 pattern = re.compile(r'^\d{6}[A-D]\d{2}R\d{2}$') # 测试符合要求的样例 print(pattern.fullmatch("123456B01R02")) # 匹配成功,返回匹配对象 print(pattern.fullmatch("263956A01R04")) # 匹配成功,返回匹配对象 # 测试不符合要求的字符串 print(pattern.fullmatch("123456F01R02")) # 首字母超出A-D范围,返回None print(pattern.fullmatch("12345B01R02")) # 数字位数不足,返回None
如果使用re.fullmatch方法做全匹配,也可以省略正则首尾的^和$,该方法会自动校验整个字符串是否完全匹配规则。
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

