使用正则表达式替换parantheses中的逗号

时间:2015-07-05 21:02:06

标签: sql regex python-2.7

我在Python中有一个要求,我需要使用正则表达式替换所有带有唯一字符的逗号,例如"$""|"。我试过这样做,但无法实现我的目标。

请在下面找到我需要更换的示例字符串。

例如考虑下面的字符串: -

SELECT 'column1' AS "Column 1" , 
  'column2' AS "Column 2" , 
  'column3' AS "Column 3", 
SUM(Column_1, Column_2) , 'column5' AS "Column 5" ,
CONCAT("str1","str2","str3") , 
ADD(len(str1),avg(column_1),sum(column_1,column_2,column_3)) 

在上面的字符串中,我想用" $"替换括号内的所有逗号。即

SUM(Column_1 $ Column_2)
CONCAT("str1"$"str2"$"str3")
ADD(len(str1)$avg(column_1)
  $sum(column_1$column_2$column_3))

我必须在正则表达式的帮助下完成此操作。我能够为2个值执行此操作,意味着当()中只有一个逗号我能够替换但是当使用多个逗号的场景进行测试时,我的表达式失败了。

1 个答案:

答案 0 :(得分:0)

像这样的正则表达式? (\s?,\s?)(?=[^\(]*\))|(\s?,\s?)(?=(?:[^\(]*\([^\(]*?\))*\))

请参阅:https://regex101.com/r/uT1gQ7/3

如果在显示另一个)之前跟随(,则使用 lookahead ,查看级别1深度,它会使逗号与其周围的可选空格匹配。第二种方法是查看剩下的字符串是否除了其他)结构之外还有一个附加(stuff),它应该可以解决问题。