Regex в Postgres - не делаю то, что я пытаюсь сделать (вопрос новичка) - PullRequest
1 голос
/ 22 мая 2009

У меня есть это регулярное выражение в запросе в 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 Ответ

4 голосов
/ 22 мая 2009

Удвой свои обратные слеши. \ => \\

Постгрес думает, что вы делаете экранирование на самой строке.

В более новых версиях PostgreSQL, где standard_conforming_strings по умолчанию включено, больше нет необходимости удваивать обратную косую черту, если вы не используете E'string' или явно не установили standard_conforming_strings в off.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...