我想使用正则表达式匹配“三个大写字母、一个小写字母和三个大写字母”。困难在于相邻的大写字母必须相同。例如,我期望 AAAbCCC
,但不是 AAAbCCD
或 ABAbCDC
。
这是我尝试过的:
print(re.findall("[A-Z]{3}[a-z][A-Z]{3}", l))
但是,这不是我想要的,因为它也匹配 AAAbCCD
和 ABAbCDC
。
最佳答案
利用捕获的分组:
^([A-Z])\1\1[a-z]([A-Z])\2\2$
^([A-Z])
捕获第一个大写,放入捕获组1,\1\1
匹配后面两个字符如果与捕获的相同一。第二个捕获的也是如此,后来被\2
引用
您可以使用范围匹配,{}
:
^([A-Z])\1{2}[a-z]([A-Z])\2{2}$
关于python - 使用正则表达式匹配一行中的相同字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40261968/