删除regex中括号的内容是什么?

2024-09-27 07:32:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做这样的事

Alice in the Wonderland [1865] [Charles Lutwidge Dodgson] Rating 4.5/5

^{pr2}$

实现这一点的regex命令是什么?在


Tags: thein命令regexratingalicecharlespr2
3条回答

您希望转义括号,并将非贪婪修饰符?与catch all表达式.+一起使用。在

>>> 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'

说明:

  • .表示任何字符和+一次或多次出现。这个表达式是“greedy”,它将匹配所有内容(字符串的其余部分包括任何右括号),因此您需要非贪心修饰符?使其在右括号处停止。注意,x?表示“x”的零次或一次出现,因此上下文很重要。在
  • 将其更改为.*如果要捕获“[]”,*表示零次或多次出现
  • \s表示任何空格字符

您可以使用“negated”字符类来代替.+?[^x]表示not "x",但是结果表达式很难读懂:\[[^\]]+\]。在

Justhalf的观察非常中肯:只要括号没有嵌套,这个方法就可以工作。在

您可以使用^{}

>>> re.sub(r'\[[^]]*\]\s?' , '', 'Alice in the Wonderland [1865] [Charles Lutwidge Dodgson] Rating 4.5/5')
'Alice in the Wonderland Rating 4.5/5'
>>>

正则表达式不适合匹配任意数量的左括号和右括号,但如果它们没有嵌套,则可以使用以下正则表达式来完成:

import re
string = 'Alice in the Wonderland [1865] [Charles Lutwidge Dodgson] Rating 4.5/5'
re.sub('\[[^\]]+\]\s*','',string)

请注意,它还将删除括号后的所有空间。在

相关问题 更多 >

    热门问题