即。 'aaeegggwwqqqqq', 'ttteeyyjjj'
我试过了r'(([a-z])\1*)+$'
,但得到错误说:不能引用开放组。
任何人都可以帮我搞清楚吗?谢谢!
答案 0 :(得分:0)
确实
(([a-z])\2*)+$
工作?
快速查看,(([a-z])\2*)
是第一组,([a-z])
是第二组。看起来你打算引用第二组。
答案 1 :(得分:0)
您应该使用非捕获外部组:
re.match(r'(?:([a-z])\1+)+$', s)
请参阅regex demo
这样,您不必重新调整模式中的反向引用。
另一种方法是使用命名的捕获组和命名的反向引用:
re.match(r'((?P<l>[a-z])(?P=l)+)+$', s)
在这里,(?P<l>[a-z])
将一个ASCII小写字母捕获到Group&#34; l&#34;和(?P=l)+
匹配1个或多个(+
匹配量化子模式的一次或多次出现次数尽可能多次)捕获的字母的出现次数。
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