2015-07-05 133 views
-1

我在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个值做到这一点,这意味着当()中只有一个逗号时,我可以替换,但是当用多个逗号测试时,我的表达式失败。

回答

0

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

见:https://regex101.com/r/uT1gQ7/3

它匹配逗号与它周围的可选空间,如果后面)出现另一个(前使用先行,看着1级深度。第二个替代看起来如果剩余的字符串除了其他(stuff)结构之外还有一个附加的),它应该做的。

+0

非常感谢Andris的回复。你给的解决方案部分适用于我。但它与ADD函数中下面部分的前两个逗号不匹配。 ADD(len(str1),avg(column_1),sum(column_1,column_2,column_3)) –

+0

你是对的,错过了,为它编写了一个编辑。 –

+0

现在就像一个魅力!非常感谢。我需要真正学到很多东西。 –