配置单元中的正则表达式替换解决方案以屏蔽前 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 - 根据正则表达式条件替换所有单元格值

C# 正则表达式 Replace的功能

一个可以使用多个正则表达式进行多次尝试匹配,并进行替换的Excel VBA自定义函数(UFD)

正则表达式来掩盖 IBAN

PHP正则表达式替换以@结尾以2个空格结尾的单词[关闭]

java验证,”支持6-20个字母数字下划线或减号,以字母开头“这个的正则表达式怎么写?