正则表达式替换 Hive 中的解决方案以屏蔽前 6 个字符



尝试使用regexp_replace屏蔽 Hive 中的前 6 个字符。但是,无法实现解决方案。

输入:

123-45-6789

输出:

###-##-6789

如果您灵活地使用#以外的其他字符来屏蔽字符串,则可以使用mask_show_last_n的内置屏蔽函数

select mask_show_last_n('123-45-6789',4) 

输出将被nnn-nn-6789,因为n在这些掩码函数中默认用于屏蔽数字。

获取前 6 个字符的子字符串并替换除-之外的所有内容,然后与字符串的其余部分连接:

select regexp_replace(substr('123-45-6789',1,6),'[^-]','#')||substr('123-45-6789',7)

结果:

###-##-6789

对于 Hive 版本 <2.2.0,请使用 concat 而不是 || 运算符:

select concat( regexp_replace(substr('123-45-6789',1,6),'[^-]','#'), substr('123-45-6789',7))

最新更新