Postgresql regexp_replace() 反斜杠和双引号

Posted

技术标签:

【中文标题】Postgresql regexp_replace() 反斜杠和双引号【英文标题】:Postgresql regexp_replace() backslash and double quotes 【发布时间】:2019-12-05 06:16:05 【问题描述】:

我正在尝试导入 JSON 文件,其中值包含这样的数据

"\"Koslov Git †girish\"Ges"

返回应该是"Koslov Git †girish Ges"

多余的\"是麻烦

我尝试了REGEXP_REPLACE(values, '\\''+', '''', 'g'),但没有成功。我怎样才能摆脱这个。注意不要替换第一个和最后一个双引号

【问题讨论】:

为什么要替换反斜杠转义的单引号(以及任何后续单引号)? 返回应该是"Koslov Git †girish Ges" 如果要删除双引号,为什么要替换单引号? 我在哪里替换单引号。如果我知道我做错了什么,我可能不会问这个问题 在你的正则表达式中。只有单引号。 【参考方案1】:
with data(json_object) as (
    values ('"\"Koslov Git †girish\" Ges"'::jsonb)
)

select regexp_replace(json_object::text, '\\"', '', 'g')
from data;

Db<>fiddle.

【讨论】:

我也试过这个。但对象周围没有单引号。它是一个 json 对象。

以上是关于Postgresql regexp_replace() 反斜杠和双引号的主要内容,如果未能解决你的问题,请参考以下文章

需要使用 regexp_replace (Postgresql) 将逗号添加到数字列表中

Postgresql regexp_replace() 反斜杠和双引号

postgresql varchar字段regexp_replace正则替换

Postgresql regexp_replace 替换所有数字

Postgres regexp_replace:无法用第一个捕获的组替换源文本

列出所有外键 PostgreSQL