postgres regexp_replace只允许a-z和A-Z

时间:2010-12-13 12:07:55

标签: regex postgresql

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

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

我想删除上面字符串中的所有特殊字符和数字,只允许a-zA-Z其他字符应替换为''如何做到这一点?

5 个答案:

答案 0 :(得分:52)

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

答案 1 :(得分:11)

对我来说,以下工作。

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

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

实施例,

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

返回:“WellThis Did-Not work& *($ %%)_”

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

返回:“WellThisDidNotwork”

哪个字符我们不想删除。

答案 2 :(得分:8)

使其更简单:

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

答案 3 :(得分:3)

如果要用最接近的非特殊字符替换字符,可以执行以下操作:

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

答案 4 :(得分:0)

应该是:

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