regex findall只输出模式的第一个字符

regex findall只输出模式的第一个字符,regex,Regex,我一直想做的是做一个像这样的模式:XXXxXXX,其中所有的x都是任意的字母,但是大x的第一个和第四个是相同的。我还想在字符串中查找此模式的所有案例 这就是我编写的代码(我编写字符串只是为了测试模式): 这是我得到的结果: ['A', 'A', 'A', 'A'] 然后我尝试改变字符串,使第一个和第四个大字母在字符串中模式的第四次重复中不匹配,这就是我得到的结果: ['A', 'A', 'A'] 因此,该模式似乎是正确的,但由于某种原因,它没有打印出所有的模式?它只返回第一个字母,因为只有这

我一直想做的是做一个像这样的模式:XXXxXXX,其中所有的x都是任意的字母,但是大x的第一个和第四个是相同的。我还想在字符串中查找此模式的所有案例

这就是我编写的代码(我编写字符串只是为了测试模式):

这是我得到的结果:

['A', 'A', 'A', 'A']
然后我尝试改变字符串,使第一个和第四个大字母在字符串中模式的第四次重复中不匹配,这就是我得到的结果:

['A', 'A', 'A']

因此,该模式似乎是正确的,但由于某种原因,它没有打印出所有的模式?

它只返回第一个字母,因为只有这部分在一个组中。你也必须把整个正则表达式放在一个组中。但在这之后,第一个字母将在第二组中,因此您必须将
\1
更改为
\2

试一下:

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

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