擅长:python、mysql、java
<p>首先,Python不使用正斜杠(<code>/</code>)来表示正则表达式模式的开始和结束。按照惯例,使用原始字符串。原始字符串是避免字符串中特殊字符编码的一种方法。最常见的例子是换行符(<code>'\n'</code>)。通常这两个字符将被转换成一个特殊的换行符,但是如果我们想要一个<em>literal</em>正斜杠后跟一个<em>literal</em>n,我们使用一个原始字符串,比如<code>r'\n'</code>。或者,我们可以转义反斜杠字符并将其写为<code>'\\n'</code>,但是对于具有更多特殊字符的较长字符串,我们确实希望避免在任何地方都使用反斜杠。正如您可能注意到的,原始字符串是编写正则表达式的一种非常方便的方法。在</p>
<p>您忘记将模式设置为原始字符串,因此\b被解释为特殊的转义字符(在本例中,无论出于何种原因,它都会转换为ASCII字符#8),而不是字边界。通过在字符串前面加上<code>r</code>可以使任何字符串文本成为原始字符串:</p>
<pre><code>>>> re.findall('\bint|void|return\b', 'int main( void )\n{\nreturn 0;\n}')
['void']
>>> re.findall(r'\bint|void|return\b', 'int main( void )\n{\nreturn 0;\n}')
['int', 'void', 'return']
</code></pre>