如何在正则表达式模式中定义循环?

时间:2013-10-03 08:52:17

标签: regex

我想断言一个String包含两个相同的子串。

我尝试了这个正则表达式:[A-ZA-Z]{2}

我想要检测的内容:

AZAZ
CUCU
PIPI

但是这个正则表达式只是检查一行中是否有4个大写字母,所以

ABCD --> it's good and it shouldn't be 

如果不清楚我真的很抱歉,我不知道如何编写正则表达式以断言重复。

1 个答案:

答案 0 :(得分:2)

使用Python,您可以执行以下操作:

p="((?P<two_chars>[A-Z]{2})(?P=two_chars))"
s="AZAZABCDCUCUPIPI"
re.findall(p, s)
[('AZAZ', 'AZ'), ('CUCU', 'CU'), ('PIPI', 'PI')]

然后从列表中提取所需的元素。或者你可以更快地做到:

[k for k,v in re.findall(p,s)]
['AZAZ', 'CUCU', 'PIPI']

希望它有所帮助。