regexp_replace для обрезания строки по указанному символу с postgresql - PullRequest
0 голосов
/ 10 мая 2019

Я хочу получить дружественные URL в postgres. Пример:

Мне бы хотелось, чтобы url = https://this -is-the-domain-i-want /? But_not_this # stuff% stuff и url = https://this -is-the-domain- я-хочу / это-тоже /? but_not_this # stuff% stuff чтобы вернуть https://this -is-the-domain-i-want / и https://this -is-the -домен-я-хочу / это-тоже / соответственно.

Я могу успешно использовать вложенное регулярное выражение для этого:

REGEXP_REPLACE (REGEXP_REPLACE (REGEXP_REPLACE (url, '\? (. )', ''), '\% (. )', ''), '# (. *)', ' «)

но я надеялся на что-то более чистое (для этого не потребовалось бы повторять этот URL несколько раз.

Я знаю, что регулярное выражение имеет | or, но я пробовал REGEXP_REPLACE(url, '\?(.*)|\%(.*)|\#(.*)|\_(.*)', '') безуспешно.

1 Ответ

0 голосов
/ 10 мая 2019

Таким образом, в основном вы просто хотите удалить строку запроса и фрагменты, то есть все после ?, включая ? и аналог для #.

Это будет:

regexp_replace(url, '[\?#].*', '');

Я бы не стал удалять _ и %, поскольку они могут иметь значение при идентификации основного ресурса (_ - это только допустимый символ, а % вводит кодированный символ URL).

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