擅长:python、mysql、java
<p>在末尾锚定模式,并使用正确的字符类:</p>
<pre><code>output = re.sub(r"[\W\d_]+$", "", s)
</code></pre>
<p>这将删除字符串末尾所有非字母字符的一次运行;<code>$</code>锚点限制范围,<code>[\W\d_]</code>正确匹配非字母,而不仅仅是非单词字符(单词字符包括数字和下划线字符)。你知道吗</p>
<p>我还将regex设置为原始字符串(对于regex模式,您应该始终这样做),这样就不需要使用双反斜杠。你知道吗</p>
<p>请注意,虽然<code>[^a-zA-Z]</code>可以替换<code>[\W\d_]</code>,但我强烈建议<code>[\W\d_]</code>而不是<code>[^a-zA-Z]</code>,因为前者是Unicode友好的,而后者则不是;例如,如果您的文本是<code>'résumé'</code>,则使用<code>[^a-zA-Z]</code>会去掉后面的<code>é</code>,<code>[\W\d_]</code>不会</p>