擅长:python、mysql、java
<p>如果只想删除字母后的零,可以使用:</p>
<pre><code>([a-zA-Z])0+
</code></pre>
<p>替换为<code>\1</code>反向引用。参见<a href="https://regex101.com/r/oI2vF0/1" rel="nofollow">regex demo</a>。在</p>
<p><code>([a-zA-Z])</code>将捕获一个字母,<code>0+</code>将匹配1个或多个零。在</p>
<p><a href="http://ideone.com/n1BaaV" rel="nofollow">Python demo</a>:</p>
^{pr2}$
<p>请注意,<a href="https://docs.python.org/2/library/re.html#re.sub" rel="nofollow"><strong>^{<cd4>}</strong></a>将查找并替换所有不重叠的匹配项(将执行全局搜索和替换)。如果没有匹配项,字符串将按原样返回,不做任何修改。因此,不需要使用额外的<code>re.match</code>/<code>re.search</code>。在</p>
<p><strong>UDPATE</strong></p>
<p>如果数字只包含零,要保持1为零,可以使用</p>
<pre><code>import re
s = ['e004_n07','e000_n00']
res = [re.sub(r'(?<=[a-zA-Z])0+(\d*)', lambda m: m.group(1) if m.group(1) else '0', x) for x in s]
print(res)
</code></pre>
<p>参见<a href="http://ideone.com/QeFcsL" rel="nofollow">Python demo</a></p>
<p>在这里,<code>r'(?<=[a-zA-Z])0+(\d*)'</code>regex匹配ASCII字母(<code>(?<=[a-zA-Z])</code>)后面的一个或多个零(<code>0+</code>),然后用<code>(\d*)</code>将任何其他数字(0或更多)捕获到组1中。然后,在替换中,我们检查组1是否为空,如果它是空的,我们插入<code>0</code>(只有零),否则,我们插入第1组的内容(第一个前导零之后的剩余数字)。在</p>