寻求识别含大写字母的三位数字编码转换错误的正则表达式方案
三位编码错误识别解决方案
问题描述
我有一批三位数字编码,比如001、002、003,但存在转换错误,比如Q04(正确应为004),需要用正则表达式识别这类错误。
需求要点
- 目标是空格分隔的三位字符词,且至少包含一个大写字母
- 不能匹配
004、014、114这类正确的纯数字编码 - 编码最大值为200
- 要在大量文本文件中识别这类错误
补充测试场景
测试字符串中仅003是正确编码,00Q、0Q2等为错误项,需识别:
text = '00Q ALLAN, Wilham Ross 0Q2 ALLARDYCE, Margaret Isabel 003 ALLARDYCE, Mervyn George Q04 ANKER. Delia Roswyn QQ5 ANKER, Doreen Alison'
最终解决方案
以下是实现错误识别的Python代码,结合自定义正则表达式:
# matchTestSub.py import re def isValidInteger(string): try: int(string) # 尝试将字符串转为整数 return True # 转换成功,是有效整数 except ValueError: return False # 转换失败,不是有效整数 text = '00Q ALLAN, Wilham Ross 0Q2 ALLARDYCE, Margaret Isabel 003 ALLARDYCE, Mervyn George Q04 ANKER. Delia Roswyn QQ5 ANKER, Doreen Alison' pattern1 = r'\b[A-Z0-9]{3}\b(?![A-Z]+)' match = re.findall(pattern1,text) if match: for x in match: print(x, isValidInteger(x))
正则设计思路
- 使用负向前瞻
(?![A-Z]+)排除姓名等全大写的三位字符串匹配 - 匹配由数字和/或大写字母组成的三位字符词,后续通过
isValidInteger函数过滤掉纯数字的正确编码
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

