#postgresql #regexp-replace
#postgresql #регулярное выражение-замена
Вопрос:
Я пытаюсь удалить с помощью REGEXP_REPLACE следующие специальные символы: "[]{}
из следующего текстового поля: [{"x":"y","s":"G_1","cn":"C8"},{"cn":"M2","gn":"G_2","cn":"CA99"},{"c":"ME3","gn":"G_3","c":"CA00"}]
и замените их ничем, даже пробелом.
* Излишне говорить, что это всего лишь пример строки, и мне нужно найти согласованное решение для похожих, но разных строк.
Я пытался запустить следующее: SELECT REGEXP_REPLACE('[{"x":"y","s":"G_1","cn":"C8"},{"cn":"M2","gn":"G_2","cn":"CA99"},{"c":"ME3","gn":"G_3","c":"CA00"}] ','[{[}]":]','')
Но получил практически ту же строку..
Заранее спасибо!
Комментарии:
1. Это выглядит как текст в формате JSON. Почему вы хотите удалить структуру из этого?
Ответ №1:
Вам нужно экранировать специальные символы (
) и указать, что вы хотите повторить операцию для каждого символа ( 'g'
), иначе она остановится при 1-м совпадении
SELECT REGEXP_REPLACE(
'[{"x":"y","s":"G_1","cn":"C8"},{"cn":"M2","gn":"G_2","cn":"CA99"},{"c":"ME3","gn":"G_3","c":"CA00"}] ',
'[{[}]":]',
'',
'g');
regexp_replace
--------------------------------------------------
xy,sG_1,cnC8,cnM2,gnG_2,cnCA99,cME3,gnG_3,cCA00
(1 row)
Комментарии:
1. ps: вопрос требует удаления
[]{}
, и ваш пример также удаляется:"
, поэтому я последовал вашему примеру..2. Привет, JGH, большое вам спасибо за вашу помощь, но, как вы упомянули в своем комментарии, мне нужно продолжать
:
(что означает, что приведенный мной пример неверен), требуемый результат должен быть следующим: x: y, s: G_1, cn: C8, cn: M2,gn: G_2, cn: CA99,c: ME3,gn: G_3,c: CA003. @TalSibony таким образом, вы можете удалить
:
из regex_replace 2-й аргумент ('[{[}]"]'
)4. Owww нет, я вижу, что для этого требуется только удаление
:
из второго аргумента в вашем решении, большое спасибо!