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