擅长:python、mysql、java
<p>您应该使用非捕获外部组:</p>
<pre><code>re.match(r'(?:([a-z])\1+)+$', s)
</code></pre>
<p>参见<a href="https://regex101.com/r/f186ye/1" rel="nofollow">regex demo</a></p>
<p>这样,就不必重新调整模式内部的反向引用。你知道吗</p>
<p>另一种方法是使用命名的捕获组和命名的反向引用:</p>
<pre><code>re.match(r'((?P<l>[a-z])(?P=l)+)+$', s)
</code></pre>
<p>见<a href="https://regex101.com/r/f186ye/2" rel="nofollow">this regex demo</a></p>
<p>这里,<code>(?P<l>[a-z])</code>将ASCII小写字母捕获到组“l”中并且<code>(?P=l)+</code>匹配捕获的字母的1个或多个(<code>+</code>尽可能多次匹配量化子模式的一个或多个出现)。你知道吗</p>
<p><a href="http://ideone.com/ipIFkx" rel="nofollow">Python demo</a>:</p>
<pre><code>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))
</code></pre>
<p>输出:</p>
<pre><code>aaeegggwwqqqqq matches the pattern
ttteeyyjjj matches the pattern
</code></pre>