如何用Python正则表达式匹配AA、BB类连续相同大写双字母
解决Python中匹配两个连续相同大写字母的正则问题
没问题,我来帮你搞定这个需求!你需要的是仅匹配由两个完全相同的大写字母组成的字符串,排除那些长度不对、字母不同或者包含小写的情况——之前的^[A-Z]{2}$确实不行,因为它会匹配任意两个大写字母,不管是否重复。
正确的正则表达式
你可以直接用这个正则:^([A-Z])\1$
表达式解析
^和$:锚定字符串的开头和结尾,确保我们匹配的是整个字符串,不会误判像DDD这种包含符合条件子串但整体长度超标的情况([A-Z]):捕获一个大写字母到分组1中\1:引用分组1里捕获到的字符,保证第二个字符和第一个完全一致
Python代码示例
下面是Python 3.x的测试代码,用re.fullmatch方法来验证更直观:
import re # 定义匹配模式 match_pattern = r'^([A-Z])\1$' # 测试有效字符串 valid_examples = ["AA", "ZZ", "DD", "EE"] print("有效示例测试结果:") for s in valid_examples: if re.fullmatch(match_pattern, s): print(f"✅ '{s}' 匹配成功") else: print(f"❌ '{s}' 匹配失败") # 测试无效字符串 invalid_examples = ["AB", "DDD", "aA", "Aa", "Cd", "DE"] print("\n无效示例测试结果:") for s in invalid_examples: if re.fullmatch(match_pattern, s): print(f"✅ '{s}' 匹配成功") else: print(f"❌ '{s}' 匹配失败")
结果说明
运行代码后你会看到:
- 所有有效示例(AA、ZZ、DD、EE)都会匹配成功
- 无效示例全部匹配失败:
AB/DE/Cd:两个字母不相同,\1无法匹配对应字符DDD:长度为3,被^和$的长度限制排除aA/Aa:包含小写字母,[A-Z]仅匹配大写字符,不满足条件
内容的提问来源于stack exchange,提问作者Sang-il Ahn
相关产品推荐
相关产品推荐

