Postgres中的正则表达式 - 没有做我想做的事(新手问题)

时间:2009-05-22 03:38:09

标签: sql regex postgresql

我在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,BUENOS正常工作,但它没有采取',''。 ' - '也不是这个词之后的空格。我需要帮助找到问题所在。

1 个答案:

答案 0 :(得分:4)

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

Postgres认为你正在逃避字符串本身。

在默认启用standard_conforming_strings的较新PostgreSQL版本中,除非您使用E'string'或明确将standard_conforming_strings设置为{{1},否则不再需要加倍反斜杠}。