如何用不在括号内的逗号分隔?

bar*_*ard 14 python regex

假设我有一个这样的字符串,其中的项目用逗号分隔,但在带有括号内容的项目中也可能有逗号:

(编辑:对不起,忘了提一些项目可能没有括号内容)

"Water, Titanium Dioxide (CI 77897), Black 2 (CI 77266), Iron Oxides (CI 77491, 77492, 77499), Ultramarines (CI 77007)"
Run Code Online (Sandbox Code Playgroud)

如何只用那些不在括号内的逗号分割字符串?即:

["Water", "Titanium Dioxide (CI 77897)", "Black 2 (CI 77266)", "Iron Oxides (CI 77491, 77492, 77499)", "Ultramarines (CI 77007)"]
Run Code Online (Sandbox Code Playgroud)

我想我必须使用正则表达式,也许是这样的:

([(]?)(.*?)([)]?)(,|$)
Run Code Online (Sandbox Code Playgroud)

但我仍然想让它发挥作用.

Avi*_*Raj 26

使用否定先行来匹配不在括号内的所有逗号.根据匹配的逗号分割输入字符串将为您提供所需的输出.

,\s*(?![^()]*\))
Run Code Online (Sandbox Code Playgroud)

DEMO

>>> import re
>>> s = "Water, Titanium Dioxide (CI 77897), Black 2 (CI 77266), Iron Oxides (CI 77491, 77492, 77499), Ultramarines (CI 77007)"
>>> re.split(r',\s*(?![^()]*\))', s)
['Water', 'Titanium Dioxide (CI 77897)', 'Black 2 (CI 77266)', 'Iron Oxides (CI 77491, 77492, 77499)', 'Ultramarines (CI 77007)']
Run Code Online (Sandbox Code Playgroud)