在HIVE中使用正则表达式提取并掩码字符串中的手机号码
解答
1. 使用regexp_replace实现号码掩码替换
你可以直接调用regexp_replace函数完成替换操作,函数语法为regexp_replace(原字符串, 匹配正则规则, 替换后的内容),如果要将匹配到的号码替换为加粗斜体的Mobile number,纯数字号码的替换示例如下:
SELECT regexp_replace('You can also connect with me on this number 99XXXXXXXX', '[0-9]+', '***Mobile number***');
2. 匹配包含空格、特殊符号的电话号码正则
如果需要匹配类似(+123) 456 789这类包含加号、括号、空格的电话号码,可以根据格式严格程度选择对应的正则:
- 严格匹配
(+数字) 数字 数字格式的正则:\(\+[0-9]+\) [0-9]+ [0-9]+,注意SQL环境下反斜杠需要转义,要写为\\(\\+[0-9]+\\) [0-9]+ [0-9]+ - 通用匹配包含数字、空格、+、()的任意电话号码串的正则:
[+()0-9 ]+,如果要避免匹配到零散的数字符号,可以补充前后边界判断,写成(?<![0-9])[+()0-9 ]+(?![0-9])
对应你的示例字符串的完整替换代码如下:
SELECT regexp_replace('You can also connect with me on this number (+123) 456 789.', '\\(\\+[0-9]+\\) [0-9]+ [0-9]+', '***Mobile number***');
执行后输出结果为:You can also connect with me on this number ***Mobile number***.
内容的提问来源于stack exchange,提问作者Rajat Arora
相关产品推荐
相关产品推荐

