postgres regexp_replace只允许az和AZ

d-m*_*man 25 regex postgresql

在字符串的表格列中,我们可以有数字/特殊字符/空格.我想用空字符替换数字/特殊字符/空格,我看到有功能命名,regexp_replace但如何使用不太多的用户友好帮助例如我想使用以下字符串.

String = 'abc$wanto&toremove#special~chars'
Run Code Online (Sandbox Code Playgroud)

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

小智 57

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


Lia*_*ell 11

对我来说,以下工作.

regexp_replace(code, '[^a-zA-Z0-9]+', '','g')    
Run Code Online (Sandbox Code Playgroud)

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

例,

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

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

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

返回:"WellThisDidNotwork"

哪个字符我们不想删除.


小智 9

为了简化:

regexp_replace('abc$wanto&toremove#special~chars', '[^[:alpha:]]')
Run Code Online (Sandbox Code Playgroud)

  • `select regexp_replace('abc $ wanto&toremove#special~chars','[^ [:alpha:]]','','g')` (4认同)

Thi*_*ata 5

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

\n\n
select\n  translate(\n    lower( name ), ' ''\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa9\xc3\xa8\xc3\xab\xc3\xaa\xc3\xad\xc3\xac\xc3\xaf\xc3\xae\xc3\xb3\xc3\xb2\xc3\xb5\xc3\xb6\xc3\xb4\xc3\xba\xc3\xb9\xc3\xbc\xc3\xbb\xc3\xa7\xc3\x87', '--aaaaaeeeeiiiiooooouuuucc'\n  ) as new_name,\n  name\nfrom cities;\n
Run Code Online (Sandbox Code Playgroud)\n