【发布时间】:2016-11-16 09:54:29
【问题描述】:
我正在寻找一个用逗号分割字符串的正则表达式。听起来很简单,但还有一个限制。字符串上的参数可以有括号括起来的逗号,不应拆分字符串。
例子:
1, 2, 3, add(4, 5, 6), 7, 8
^ ^ ^ ! ! ^ ^
字符串只能用 ^ 标记的逗号分隔,不能用!。
我在这里找到了解决方案:A regex to match a comma that isn't surrounded by quotes
正则表达式:
,(?=([^\(]*\([^\)]*\))*[^\)]*$)
但我的字符串可能更复杂:
1, 2, 3, add(4, 5, add(6, 7, 8), 9), 10, 11
^ ^ ^ ! ! ! ! ! ^ ^
对于这个字符串,结果是错误的,我不知道如何解决这个问题,或者是否可以使用正则表达式。
有人知道如何解决这个问题吗?
感谢您的帮助!
【问题讨论】:
-
尽量避免使用
,(?=([^\(]*\([^\)]*\))*[^\)]*$),这是不得已而为之的手段。 -
是转义只是括号还是你使用关键字add(...)?
-
@LoicM。 “添加”在这里只是一个例子,可以是其他任何东西。要点是括号中的逗号不应该拆分字符串!
-
你必须写一个解析器
-
同意@TheLostMind。正则表达式解决方案过于复杂,无法满足您的需求。