让我们说这是我的文字:
"a, b, c (1, 2, 3), d, f (x, y)"
我想匹配枚举的每一点,但我也不希望子列表逗号被解释为终止字符。我想要一个正则表达式来提取以下匹配项:
a
b
c (1,2,3)
d
f (x, y)
我尝试使用可选的前瞻,但我根本无法使其正常工作。
答案 0 :(得分:3)
您可以使用string.split
功能。
> "a, b, c (1, 2, 3), d, f (x, y)".split(/,\s*(?![^()]*\))/)
=> ["a", "b", "c (1, 2, 3)", "d", "f (x, y)"]
以上正则表达式将匹配所有逗号和以下零个或多个空格,前提是它后面没有( [^()]*
任何字符但不是(
或)
0或更多次和结束括号)
)