擅长:python、mysql、java
<p>正则表达式<code>MatchObject</code>结果包括匹配项的索引。剩下的就是匹配重复字符:</p>
<pre><code>import re
repeat = re.compile(r'(?P<start>[a-z])(?P=start)+-?')
</code></pre>
<p>仅当给定字母字符(<code>a</code>-<code>z</code>)至少重复一次时匹配:</p>
^{pr2}$
<p>匹配结果上的<a href="http://docs.python.org/2/library/re.html#re.MatchObject.start">^{<cd4>}</a>和<a href="http://docs.python.org/2/library/re.html#re.MatchObject.end">^{<cd5>}</a>方法提供了输入字符串中的确切位置。在</p>
<p>匹配项中包括破折号,但不包括非重复字符:</p>
<pre><code>>>> for match in repeat.finditer("a-bb-cccccccc"):
... print match.group(), match.start(), match.end()
...
bb- 2 5
cccccccc 5 13
</code></pre>
<p>如果希望<code>a-</code>部分匹配,只需将<code>+</code>替换为<code>*</code>乘数:</p>
<pre><code>repeat = re.compile(r'(?P<start>[a-z])(?P=start)*-?')
</code></pre>