【问题标题】:postgres regexp_replace want to allow only a-z and A-Zpostgres regexp_replace 只想允许 a-z 和 A-Z
【发布时间】:2010-12-13 12:07:55
【问题描述】:

在字符串的表格列中,我们可以有数字/特殊字符/空格。 我想用空字符替换数字/特殊字符/空白,我看到有一个名为 regexp_replace 的函数,但是如何使用没有太多用户友好的帮助可用,例如我想使用以下字符串。

String = 'abc$wanto&toremove#special~chars'

我想从上面的字符串中删除所有特殊字符和数字希望只允许 a-z 和 A-Z 其余字符应替换为 '' 怎么做?

【问题讨论】:

    标签: regex postgresql


    【解决方案1】:
    SELECT regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]', '', 'g');
    
            regexp_replace        
    ------------------------------
     abcwantotoremovespecialchars
    

    【讨论】:

      【解决方案2】:

      对我来说,以下工作。

      regexp_replace(code, '[^a-zA-Z0-9]+', '','g')    
      

      因为它添加了全局过滤器,所以它对整个字符串重复正则表达式。

      例子,

      SELECT regexp_replace('Well- This Did-Not work&*($%%)_', '[^a-zA-Z0-9]+', '')    
      

      返回:“这没用&*($%%)_”

      SELECT regexp_replace('Well- This Did-Not work&*($%%)_', '[^a-zA-Z0-9]+', '','g')    
      

      返回:“WellThisDidNotwork”

      哪些有我们不想删除的字符。

      【讨论】:

      • 上述表达式中的g有什么用,请告诉我
      • 它是一个全局修饰符。 “g 用于全局搜索。这意味着它将匹配所有出现的事件。” 此处解释:stackoverflow.com/questions/12993629/…
      • 谢谢。正在寻找删除空格的方法,但无法通过指定空格类型来完成。对字母数字字符使用反向匹配要容易得多(只要您没有要保留的特殊字符)。
      【解决方案3】:

      为了更简单:

      regexp_replace('abc$wanto&toremove#special~chars', '[^[:alpha:]]')
      

      【讨论】:

      • 这行得通,虽然由于某种原因似乎没有出现在the docs
      • select regexp_replace('abc$wanto&toremove#special~chars', '[^[:alpha:]]', '', 'g')
      【解决方案4】:

      如果你想用最接近的非特殊字符替换字符,你可以这样做:

      select
        translate(
          lower( name ), ' ''àáâãäéèëêíìïîóòõöôúùüûçÇ', '--aaaaaeeeeiiiiooooouuuucc'
        ) as new_name,
        name
      from cities;
      

      【讨论】:

        【解决方案5】:

        应该是:

        regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]+', '')
        

        【讨论】:

        • 你自己试试是不行的 select regexp_replace('abc123', 'a-zA-Z', '')
        • 对不起,我错过了括号,不幸的是我暂时无法测试它
        猜你喜欢
        • 1970-01-01
        • 2016-06-01
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        • 1970-01-01
        • 2016-03-25
        • 2021-12-26
        • 2011-10-21
        相关资源
        最近更新 更多