我正在尝试使用以下命令解析字符串中的所有括号:
\((.+)\)
但不知道我应该如何重写下一个字符串的命令:
(You Gotta) Fight For Your Right (to Party)
我想同时提取(You Gotta) 和(to Party)
最佳答案
你需要一个否定的字符类而不是 .+
然后使用 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)
^ ^ ^ ^
关于python - 如何正确解析右括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638327/