Postgresql regex_replace 单引号、单引号和双引号

Postgresql regex_replace comma, single and double quotes in a single

我有一个由双引号、单引号和逗号组成的字符串。我想用 regex_replace.

替换它们的所有出现

尝试过

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

它替换第一次出现的逗号,而不是第二次出现的逗号。

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

为什么不直接使用 replace()

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

或者更简单地说,使用 translate():

select translate(links, '"'',', '')

为什么要混合使用 TRANSLATE 和 REGEXP_REPLACE?随便选一个就用吧,任一个都可以为所欲为。

如果你想让REGEXP_REPLACE替换所有实例,你必须给它第四个参数(标志参数)'g' for 'global',否则在第一次匹配和替换后停止。

此外,为了保持理智,当被引用的内容带有单引号(您的引号过多)时,我会使用 dollar-quoting。

使用 TRANSLATE 可能是完成这项工作的更好工具,但您的标题专门针对 REGEXP_REPLACE,因此:

REGEXP_REPLACE(links, $$[',"]$$, '', 'g');