使用正则表达式匹配5X000Y000格式9位数字,要求X≠Y
正则表达式修改方案:匹配5X000Y000且X≠Y的9位数字
核心正则表达式
^5(\d)000(?!\1)\d000$
规则解释
^5:限定字符串以数字5开头(\d):捕获X对应的单个数字,存入分组1000:匹配中间固定的三个0(?!\1):负向先行断言,确保后续的Y数字和分组1捕获的X不相等\d000:匹配Y数字及后面固定的三个0$:限定字符串结尾,保证是严格的9位数字
修改后的代码示例
import re # 符合匹配条件的案例 valid_num = "530004000" # 不符合匹配条件的案例(X和Y相同) invalid_num = "530003000" # 执行替换操作 valid_result = re.sub(r'^5(\d)000(?!\1)\d000$', "Bronze", valid_num) invalid_result = re.sub(r'^5(\d)000(?!\1)\d000$', "Bronze", invalid_num) print(valid_result) # 输出:Bronze print(invalid_result) # 输出:530003000(未匹配,无替换)
额外:仅判断匹配状态的写法
如果不需要替换,只需要验证是否符合格式,可以用fullmatch方法:
print(re.fullmatch(r'^5(\d)000(?!\1)\d000$', valid_num) is not None) # 输出:True print(re.fullmatch(r'^5(\d)000(?!\1)\d000$', invalid_num) is not None) # 输出:False
内容的提问来源于stack exchange,提问作者Leena
相关产品推荐
相关产品推荐

