如何用正则表达式匹配单个大写字母加四位数字的特定编码?
正则匹配方案
你原来的正则存在两处逻辑错误:
[A-Z]+中的+表示匹配1个及以上大写字母,不符合「单个大写字母」的要求[0-9999]*写法错误:字符集[]内的0-9999等价于0-9,*表示匹配0个及以上数字,无法精确限制为4位数字
正确写法
直接使用以下正则即可一次性匹配所有符合规则的编码:
re.findall(r'\b[A-Z]\d{4}\b', test_data6)
规则解释
\b:单词边界,避免匹配到长字符串内部的片段(如AR0001里的R0001、R00012里的R0001)[A-Z]:精确匹配1个大写英文字母\d{4}:精确匹配4位数字
额外扩展(去重)
如果需要提取唯一编码,可以直接对结果去重:
- 不需要保留出现顺序:
unique_codes = list(set(re.findall(r'\b[A-Z]\d{4}\b', test_data6))) - 需要保留首次出现的顺序:
unique_codes = list(dict.fromkeys(re.findall(r'\b[A-Z]\d{4}\b', test_data6)))
内容的提问来源于stack exchange,提问作者andres_glez
相关产品推荐
相关产品推荐

