为Redshift重复正则表达式

时间:2017-06-16 17:57:30

标签: regex postgresql

我想从我的Redshift表格中的列中提取特殊字符(标点符号和表情符号)。我已经在这个动态测试器中测试了正则表达式函数:

http://regexr.com

这个适用于动态测试程序,用于提取非空格字符:[^a-zA-Z\s]

然而在Redshift中,它仍会拉动空格,只会拉出第一个特殊字符,无论它是问号还是表情符号。

根据Redshift文档,它确实支持regexp_substr函数:http://docs.aws.amazon.com/redshift/latest/dg/REGEXP_SUBSTR.html

我在Redshift中有以下查询:

select
*
, regexp_substr(device_contact_name,'[^\sa-zA-Z]') as special_characters
from table

例如,如果该字段有" Daniel!"它将返回"!"但如果这个领域有丹尼尔!"它将返回" "

如果该领域有" Daniel !!"我希望结果返回" !!"

关于如何从结果中正确消除空间并返回所有特殊字符的想法?

提前致谢!

1 个答案:

答案 0 :(得分:0)

反斜杠字符是默认的转义字符,因此您应该将其加倍:

select * , regexp_substr(device_contact_name,'[^\\sa-zA-Z]+') as special_characters from table