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

标签 regex

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

我试过这个正则表达式:[A-ZA-Z]{2}
我想检测什么:

AZAZ
CUCU
PIPI

但是这个正则表达式只是检查连续是否有 4 个大写字母,所以
ABCD --> it's good and it shouldn't be 

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

最佳答案

使用 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']

希望能帮助到你。

关于regex - 如何在正则表达式模式中定义循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19154801/

相关文章:

mysql - 查询以选择 var REGEX MANY 列

javascript - 用于在子字符串搜索中忽略特殊字符的正则表达式

用于 javascript 的正则表达式来计算单词(不包括数字)

javascript - 帮助编写正则表达式,仅在 <strong> 标签不存在时用 <strong> 标签包围某些文本

java - 用于在特定标题下获取特定字符串的正则表达式

python - 删除紧邻单词之前的数字

python - 从从文本文件中提取 IP 的正则表达式中排除 IP

C# 替换多个 href 值

regex - Action Script 3.0 替换多行字符串中的所有出现

regex - 如何使用 R 或命令行提取与文本文件中的电子邮件地址匹配的表达式?