【问题标题】:Using postgres regexp_replace to replace a list of strings by always the same string使用 postgres regexp_replace 将字符串列表替换为始终相同的字符串
【发布时间】:2013-11-02 21:17:13
【问题描述】:

您好,我想使用 regexp_replace(或任何其他合理的 postgres 函数)将字符串中的字符替换为 '',即删除它们。

使用 regexp_replace(('def4abcdef4ab','4', '','g') 我可以替换/删除所有出现的 '4',但我也想替换所有出现的 'e' 和 b'同一个进程,不使用多个嵌套进程,如 regexp_replace(regexp_replace(regexp_replace()))。

即我希望能够提供一个不同字符串的简短列表,然后应该用一个唯一的字符串替换。

有什么想法吗?提前非常感谢!

【问题讨论】:

    标签: regex string postgresql replace character


    【解决方案1】:

    规范的方法是使用字符类,像这样,

    regexp_replace('def4abcdef4ab','[4eb]', '','g')
    

    虽然@alexius 的方法也可以处理字符串。

    不确定是否非贪婪地量化表达式是否会使其更有效,例如 [4eb]+?

    【讨论】:

      【解决方案2】:

      regexp_replace('def4abcdef4ab','4|e|b', '','g')

      【讨论】:

        【解决方案3】:

        单个字符替换不需要正则表达式使用翻译功能,即

        translate('def4abcdef4ab','4eb', '')
        

        如果您的字符串是多个字符长,则使用 replace()。即使是嵌套的,这也可能比正则表达式提供更好的性能。

        【讨论】:

          【解决方案4】:

          好的,我自己找到了答案(PostgreSQL various clean up of string \ varchar 帮助):

          select regexp_replace(
          E'aśx€ ąsd, dsa w|adwf\n  YZas dw dgaa[aw] asdd',
          '[^a-zA-Y0-9 ]',
          '',
          'g');
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-08-31
            • 2021-08-02
            • 2014-11-17
            • 2021-12-29
            • 2012-09-25
            • 1970-01-01
            • 2015-04-26
            相关资源
            最近更新 更多