正则表达式基于特定逗号分割

时间:2014-11-14 11:49:16

标签: java regex

我有简单的要求。我有一个小字符串,想要根据逗号进行拆分,但只有在括号外

示例输入

SUM(Col1) OVER (PARTITION BY Col2, Col3) AS Col5,SUM(Col2) OVER (PARTITION BY Col2) AS Col4

预期产出:

SUM(Col1) OVER (PARTITION BY Col2, Col3) AS Col5
SUM(Col2) OVER (PARTITION BY Col2) AS Col4

由于

2 个答案:

答案 0 :(得分:2)

,(?=([^()]*\([^()]*\))*[^()]*$)

试试这个。看看演示。

http://regex101.com/r/pQ9bV3/31

P.S这假设没有嵌套的()


这是适用于我的优化正则表达式

,(?=[^)]+\()

Online demo

答案 1 :(得分:2)

通过否定的先行断言。对于这种情况,负前瞻断言是最好的选择,而不是积极的前瞻。

,(?![^()]*\))

上面的正则表达式只有在没有后跟的情况下才匹配所有逗号,

  • [^()]*任何字符,但()不属于任何字符。
  • \)闭幕式。

DEMO