在Python正则表达式中如何描述只有重复字符组的字符串

2024-10-04 07:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

'aaeegggwwqqqqq', 'ttteeyyjjj'

我尝试了r'(([a-z])\1*)+$',但得到的错误是:无法引用开放组。你知道吗

有人能帮我弄清楚吗?谢谢!你知道吗


Tags: 错误ttteeyyjjjaaeegggwwqqqqq
2条回答

是吗

(([a-z])\2*)+$

工作?你知道吗

快速看一下,(([a-z])\2*)是第一组,([a-z])是第二组。看来你是想提到第二组。你知道吗

您应该使用非捕获外部组:

re.match(r'(?:([a-z])\1+)+$', s)

参见regex demo

这样,就不必重新调整模式内部的反向引用。你知道吗

另一种方法是使用命名的捕获组和命名的反向引用:

re.match(r'((?P<l>[a-z])(?P=l)+)+$', s)

this regex demo

这里,(?P<l>[a-z])将ASCII小写字母捕获到组“l”中并且(?P=l)+匹配捕获的字母的1个或多个(+尽可能多次匹配量化子模式的一个或多个出现)。你知道吗

Python demo

import re
s = ["aaeegggwwqqqqq", "ttteeyyjjj", "sdfghj"]
for x in s:
    if re.match(r'(?:([a-z])\1+)+$', x):
        print("{0} matches the pattern".format(x))

输出:

aaeegggwwqqqqq matches the pattern
ttteeyyjjj matches the pattern

相关问题 更多 >