2009-05-22 55 views
1

我有這個正則表達式在postgres查詢,我不明白爲什麼它不符合正則表達式中指定的文本之後;在Postgres的正則表達式 - 沒有做我想做的事(新手問題)

這個想法是刪除最後一部分,包括之間的分隔符。

我有這樣的記錄,以匹配:

Villa hermosa, Pilar, PCIA. BS. AS.  
Esmeralda - Pilar - BUENOS AIRES.  
San Martin, BUENOS AIRES.- 

,我用這個表達式:

regexp_replace(location, 
'([,\s\.-]*PCIA. BS. AS[,\s\.-]*| 
    [,\s\.-]*BUENOS. AIRES[,\s\.-]*$| 
    [,\s\.-]*BS. AS[,\s\.-]*$| 
    [,\s\.-]*P.B.A[,\s\.-]*$)', '') 

這是工作從文本PCIA,布宜諾斯艾利斯罰款,但沒有采取',''。'這個詞之後的' - '也沒有空格。我需要幫助找到問題所在。

回答

4

加倍你的反斜槓。 \ => \\

Postgres認爲你正在對字符串本身進行轉義。

在新的PostgreSQL版本,其中standard_conforming_strings是在默認情況下它是不再需要雙反斜線,除非您使用的是E'string'或已明確設置standard_conforming_stringsoff

+0

非常感謝! (我確信我曾嘗試過一次,但肯定另一個錯誤阻止了它的工作,儘管它不是原因) – Sam 2009-05-22 03:47:54