python - 使用正则表达式匹配一行中的相同字符

标签 python regex

我想使用正则表达式匹配“三个大写字母、一个小写字母和三个大写字母”。困难在于相邻的大写字母必须相同。例如,我期望 AAAbCCC,但不是 AAAbCCDABAbCDC

这是我尝试过的:

print(re.findall("[A-Z]{3}[a-z][A-Z]{3}", l))

但是,这不是我想要的,因为它也匹配 AAAbCCDABAbCDC

最佳答案

利用捕获的分组:

^([A-Z])\1\1[a-z]([A-Z])\2\2$

Demo

  • ^([A-Z]) 捕获第一个大写,放入捕获组1,\1\1 匹配后面两个字符如果与捕获的相同一。第二个捕获的也是如此,后来被 \2
  • 引用

您可以使用范围匹配,{}:

^([A-Z])\1{2}[a-z]([A-Z])\2{2}$

关于python - 使用正则表达式匹配一行中的相同字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40261968/

相关文章:

c# - 将 "ABC42"替换为 "Douglas"但保持 ABC421 或 ABC4244 不变的正则表达式

javascript - 正则表达式检查字符串中是否存在 http 或 https

javascript - 正则表达式 - 字符串不能以空格开头、结尾并且连续包含几个空格

python - 网格布局: Column width to fit also disabled widgets

python - 调整当前代码以便能够将新表中的项目添加到购物篮中

python - 在 TensorFlow 中修改恢复的 CNN 模型的权重和偏差

c# - 如何在前瞻中匹配字符串的结尾?

php - 通过 iCloud 同步联系人和提醒的网站

Python - 更改 for-loop 内的变量会产生不同的结果

c# - 递归解析字符串