Postgresql regex_将逗号、单引号和双引号替换为一个逗号



我有一个由双引号、单引号和逗号组成的字符串。我想用regex_replace替换所有出现的它们。

尝试

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

它替换第一个逗号,而不是第二个逗号。

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

为什么要混合TRANSLATE和REGEXP_REPLACE?只要选择一个并使用它,因为任何一个都可以做任何你想做的事。

如果希望REGEXP_REPLACE替换所有实例,则必须为其提供第四个参数(标志参数("g"作为"global",否则它将在第一次匹配和替换后停止。

此外,为了保持理智,当被引用的东西有单引号时,我会使用美元报价(你的引号相当多(。

使用TRANSLATE可能是一个更好的工具,但你的标题是专门关于REGEXP_REPLACE的,所以:

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

为什么不直接使用replace()

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

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

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

最新更新