Postgresql regex_replace запятая, одинарные и двойные кавычки в одном - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть строка, которая состоит из двойных кавычек, одинарных кавычек и запятых. Я хотел бы заменить все их вхождения с помощью regex_replace.

Tried

REGEXP_REPLACE(translate (links, '"',''), '['''''',]'        , '') 

Он заменяет первое вхождение запятой, а не второе.

'https://google.com/khjdbgksdngksd#/","https://google.com/khjdbgksdngksd#/","'

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Почему вы смешиваете TRANSLATE и REGEXP_REPLACE? Просто выберите один и используйте его, так как любой из них может делать все, что вы хотите.

Если вы хотите, чтобы REGEXP_REPLACE заменял все экземпляры, вы должны дать ему четвертый аргумент (аргумент флага ) из 'g' для 'global', в противном случае он останавливается после первого совпадения и замены.

Кроме того, для сохранения здравомыслия я бы использовал цитирование в долларах, когда цитируемая вещь имеет одинарные кавычки (которые у вас есть в значительном избытке).

Использование TRANSLATE, вероятно, является лучшим инструментом для работы, но ваш заголовок был специально о REGEXP_REPLACE, поэтому:

REGEXP_REPLACE(links, $$[',"]$$, '', 'g');
0 голосов
/ 29 февраля 2020

Почему бы просто не использовать replace()?

select replace(replace(replace(links, '"', ''), '''', ''), ',', '')

Или проще: translate():

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