擅长:python、mysql、java
<pre><code>s = 'aaaaabbcdddddddd'
[(m.group(1), len(m.group(2))+1) for m in re.finditer(r'(\w)(\1*)', s)]
</code></pre>
<p>退货</p>
<pre><code>[('a', 5), ('b', 2), ('c', 1), ('d', 8)]
</code></pre>
<p>要使用它替换字符组,请执行以下操作:</p>
<pre><code>re.sub(r'(\w)(\1*)', lambda m: m.group(1)*f(len(m.group(2))+1), s)
</code></pre>
<p>使用:</p>
<pre><code>f = lambda x: x - 2 # returns 'aaadddddd'
f = lambda x: x / 2 # returns 'aabdddd'
f = lambda x: x + 1 # returns 'aaaaaabbbccddddddddd'
</code></pre>