擅长:python、mysql、java
<p>您希望转义括号,并将非贪婪修饰符<code>?</code>与catch all表达式<code>.+</code>一起使用。在</p>
<pre><code>>>> s = 'Alice in the Wonderland [1865] [Charles Lutwidge Dodgson] Rating 4.5/5'
>>> re.sub(r'\[.+?\]\s*', '', s)
'Alice in the Wonderland Rating 4.5/5'
</code></pre>
<p>说明:</p>
<ul>
<li><code>.</code>表示任何字符和<code>+</code>一次或多次出现。这个表达式是“greedy”,它将匹配所有内容(字符串的其余部分包括任何右括号),因此您需要非贪心修饰符<code>?</code>使其在右括号处停止。注意,<code>x?</code>表示“x”的零次或一次出现,因此上下文很重要。在</li>
<li>将其更改为<code>.*</code>如果要捕获“[]”,<code>*</code>表示零次或多次出现</li>
<li><code>\s</code>表示任何空格字符</li>
</ul>
<p>您可以使用“negated”字符类来代替<code>.+?</code>,<code>[^x]</code>表示<code>not "x"</code>,但是结果表达式很难读懂:<code>\[[^\]]+\]</code>。在</p>
<p>Justhalf的观察非常中肯:只要括号没有嵌套,这个方法就可以工作。在</p>