擅长:python、mysql、java
<p>您的输入是UTF-8:</p>
<pre><code>>>> content
'\xd0\x91\xd0\xbb\xd0\xb0\xd0\xbd\xd0\xba \xd1\x81\xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8c\xd1\x81\xd1\x82\xd0\xb2\xd0\xb0 \xd0\xbe \xd0\xb4\xd0\xbe\xd0\xbf\xd1\x83\xd1\x81\xd0\xba\xd0\xb5.'
</code></pre>
<p>但是您使用的是一个<em>unicode</em>正则表达式。表达式直接匹配
UTF-8输入的原始字节。在</p>
<p>在所有这些字节中,只有空格、句号和<code>\xbb</code>字节(作为<code>»</code>字符)不会被删除。其余的单个字节将被删除,因为它们不属于负字符类<code>[^...]</code>。在</p>
<p>正确使用Unicode(首先将<code>content</code>解码为Unicode)可以:</p>
^{2}$
<p>另一种方法是对正则表达式使用原始字节字符串,并匹配<em>字节组合</em>。计算UTF-8字节和范围的有效性是非常困难的。您需要<em>完全理解<a href="http://en.wikipedia.org/wiki/UTF-8" rel="nofollow">UTF-8 encodes characters to multiple bytes</a>,然后将负字符类转换为允许通过相同字节组合的一组<em>正</em>匹配。这对胆小的人来说不是。在</p>