我有简单的要求。我有一个小字符串,想要根据逗号进行拆分,但只有在括号外。
示例输入
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
由于
答案 0 :(得分:2)
,(?=([^()]*\([^()]*\))*[^()]*$)
试试这个。看看演示。
http://regex101.com/r/pQ9bV3/31
P.S这假设没有嵌套的(
或)
。
这是适用于我的优化正则表达式
,(?=[^)]+\()
答案 1 :(得分:2)
通过否定的先行断言。对于这种情况,负前瞻断言是最好的选择,而不是积极的前瞻。
,(?![^()]*\))
上面的正则表达式只有在没有后跟的情况下才匹配所有逗号,
[^()]*
任何字符,但(
或)
不属于任何字符。\)
闭幕式。