Postgresql regex_replace 逗号,单引号和双引号

Posted

技术标签:

【中文标题】Postgresql regex_replace 逗号,单引号和双引号【英文标题】:Postgresql regex_replace comma, single and double quotes in a single 【发布时间】:2020-06-13 02:08:15 【问题描述】:

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

试过了

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

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

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

【问题讨论】:

换成什么? 【参考方案1】:

为什么要混合使用 TRANSLATE 和 REGEXP_REPLACE?只需选择一个并使用它,因为任何一个都可以为所欲为。

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

另外,为了保持理智,当所引用的事物有单引号(你的引号相当多)时,我会使用美元引用。

使用 TRANSLATE 可能是更好的工作工具,但您的标题专门针对 REGEXP_REPLACE,所以:

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

【讨论】:

【参考方案2】:

为什么不直接使用replace()

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

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

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

【讨论】:

以上是关于Postgresql regex_replace 逗号,单引号和双引号的主要内容,如果未能解决你的问题,请参考以下文章

如何在 regex_replace() 中使用 db 列名 - presto

Oracle regex_replace 不排除某些值

尝试使用 regex_replace 提取数字

解码为希伯来语时不正确的 regex_replace

Oracle:是不是有支持内联代码的 REGEX_REPLACE 变体?

在进行 url 编码时,std::regex_replace 对于字符“+”不能正常工作