在逗号之前匹配字符串的正则表达式,除非文本包含一个也由逗号分隔的闭合列表

Regex that matches string before comma unless the text contains a clasped list that is also separated by comma

假设这是我的文本:

"a, b, c (1, 2, 3), d, f (x, y)"

我想匹配枚举的每个点,但我也不希望将子列表逗号解释为终止字符。我想要一个正则表达式来提取以下匹配项:

a
b
c (1,2,3)
d
f (x, y)

我尝试使用可选的前瞻性,但我根本无法让它工作。

您可以使用 string.split 函数。

> "a, b, c (1, 2, 3), d, f (x, y)".split(/,\s*(?![^()]*\))/)
=> ["a", "b", "c (1, 2, 3)", "d", "f (x, y)"]

上面的正则表达式将匹配所有逗号和后面的零个或多个空格,前提是它后面没有 ([^()]* 任何字符但不是 () 零次或多次和右大括号 ))