我有一个由双引号、单引号和逗号组成的字符串。我想用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, '"'',', '')