擅长:python、mysql、java
<p>可以按以下方式删除所有非单词字符:</p>
<pre><code>>>> re.sub(r'[^\w]', '', 'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f')
'MagX8'
</code></pre>
<p>正则表达式<code>[^\w]</code>将匹配任何不是字母、数字或下划线的字符。通过使用空字符串替换<code>re.sub</code>中的regex,您将删除字符串中的所有其他字符。</p>
<p>由于可能需要保留其他字符,因此更好的解决方案可能是指定要保留的更大范围的字符(不包括控制字符)。例如:</p>
<pre><code>>>> re.sub(r'[^\x20-\x7e]', '', 'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f')
'MagX8'
</code></pre>
<p>或者你可以用等价的<code>[^ -~]</code>替换<code>[^\x20-\x7e]</code>,这取决于你觉得哪个更清楚。</p>
<p>要排除第一个控制字符之后的所有字符,只需添加一个<code>.*</code>,如下所示:</p>
<pre><code>>>> re.sub(r'[^ -~].*', '', 'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f')
'MagX'
</code></pre>