擅长:python、mysql、java
<p>因为这正是<code>re.sub()</code>doc告诉你的:</p>
<ul>
<li>模式<code>'a(b)'</code>表示“匹配‘a’,带有可选的尾随‘b’”。(它可以自己匹配“a”,但它不可能像你想象的那样自己匹配“b”。如果你是这个意思,那么使用非贪婪的<code>(a)??b</code>)。</li>
<li>替换字符串是'd'</li>
<li>因此,在字符串“abc”上,它匹配所有“ab”,并用“d”替换,因此结果是“dc”</li>
</ul>
<p>如果你想要你想要的输出,你需要在<code>'(a)??'</code>上进行非贪婪匹配:</p>
<pre><code>>>> re.sub('(a)??b','d','abc')
'dc'
</code></pre>