2024-09-27 07:32:46 发布
网友
我想做这样的事
Alice in the Wonderland [1865] [Charles Lutwidge Dodgson] Rating 4.5/5
到
实现这一点的regex命令是什么?在
您希望转义括号,并将非贪婪修饰符?与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'
说明:
.
+
x?
.*
*
\s
您可以使用“negated”字符类来代替.+?,[^x]表示not "x",但是结果表达式很难读懂:\[[^\]]+\]。在
.+?
[^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)
请注意,它还将删除括号后的所有空间。在
您希望转义括号,并将非贪婪修饰符
?
与catch all表达式.+
一起使用。在说明:
.
表示任何字符和+
一次或多次出现。这个表达式是“greedy”,它将匹配所有内容(字符串的其余部分包括任何右括号),因此您需要非贪心修饰符?
使其在右括号处停止。注意,x?
表示“x”的零次或一次出现,因此上下文很重要。在.*
如果要捕获“[]”,*
表示零次或多次出现\s
表示任何空格字符您可以使用“negated”字符类来代替
.+?
,[^x]
表示not "x"
,但是结果表达式很难读懂:\[[^\]]+\]
。在Justhalf的观察非常中肯:只要括号没有嵌套,这个方法就可以工作。在
您可以使用^{} :
正则表达式不适合匹配任意数量的左括号和右括号,但如果它们没有嵌套,则可以使用以下正则表达式来完成:
请注意,它还将删除括号后的所有空间。在
相关问题 更多 >
编程相关推荐