2015-07-05 159 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

現在就像一個魅力!非常感謝。我需要真正學到很多東西。 –