配置单元中的正则表达式替换解决方案以屏蔽前 6 个字符
Posted
技术标签:
【中文标题】配置单元中的正则表达式替换解决方案以屏蔽前 6 个字符【英文标题】:Regexp replace solution in hive to mask first 6 characters 【发布时间】:2020-10-05 15:49:21 【问题描述】:尝试使用 regexp_replace
屏蔽 hive 中的前 6 个字符。但是,无法实现解决方案。
输入:
123-45-6789
输出:
###-##-6789
【问题讨论】:
【参考方案1】:如果您可以灵活地使用 #
以外的其他字符来屏蔽字符串,则可以使用内置屏蔽函数 mask_show_last_n
。
select mask_show_last_n('123-45-6789',4)
输出将是nnn-nn-6789
,因为n
在这些屏蔽函数中默认用于屏蔽数字。
【讨论】:
【参考方案2】:获取前 6 个字符的子字符串并在其中替换除 -
之外的所有内容,然后与字符串的其余部分连接:
select regexp_replace(substr('123-45-6789',1,6),'[^-]','#')||substr('123-45-6789',7)
结果:
###-##-6789
对于 Hive 版本
select concat( regexp_replace(substr('123-45-6789',1,6),'[^-]','#'), substr('123-45-6789',7))
【讨论】:
以上是关于配置单元中的正则表达式替换解决方案以屏蔽前 6 个字符的主要内容,如果未能解决你的问题,请参考以下文章
Pandas Dataframe - 根据正则表达式条件替换所有单元格值