【发布时间】:2019-02-18 17:29:01
【问题描述】:
我有一个字符串列表,每个字符串都有以下模式(一组单词后跟括号,用逗号分隔的单词):
"vw xy zz (X, Y, Z)"
我想要的输出是:
["vw xy zz", "X", "Y", "Z"]
我知道如何提取括号前的文字:
import re
pattern = r"(^[^\(]+)"
text = "vw xy zz (X, Y, Z)"
re.findall(pattern, text)
# ['vw xy zz ']
我也知道如何提取括号之间的文字:
pattern = r"\(.*\)"
text = "vw xy zz (X, Y, Z)"
re.findall(pattern, text)
# ['(X, Y, Z)']
但我想知道是否有一种方法可以组合模式以一次获得所需的输出。
【问题讨论】:
-
re.findall(r'[^(),\s](?:[^(),]*[^(),\s])?', s)- 一次完成,无需修剪项目。允许任何字符,但括号和逗号除外。 Demo