我试图用以下命令解析字符串中的所有括号:
\((.+)\)
但不知道我应该如何重写下一个字符串的命令:
(你必须)争取你的权利(参加派对)
我想提取(你得)和(对派对)
答案 0 :(得分:4)
您需要使用否定字符类而不是.+
,然后使用re.findall()
:
>>> s="(You Gotta) Fight For Your Right (to Party)"
>>>
>>> import re
>>> re.findall(r'\(([^()]+)\)',s)
['You Gotta', 'to Party']
请注意,这里你的正则表达式将匹配开括号和闭括号之间的所有内容,它将包含以下部分:
(You Gotta) Fight For Your Right (to Party)
^-------this part will be matched --------^
但是通过使用否定字符类[^()]+
,它将匹配括号之间的所有内容,但括号文字除外。它使正则表达式引擎在每个结束括号处停止。
(You Gotta) Fight For Your Right (to Party)
^ ^ ^ ^