我想在简历中屏蔽电话号码,其中还包含2001, 2001-03
和百分比45% 87% 78.45% 56.5%
中的日期。
我只想掩盖电话号码,我不需要完全屏蔽它。如果我只能掩盖难以猜测的3或4位数字,那就完成了工作。请帮助我。
Phone number formats are
9876543210
98765 43210
98765-43210
9876 543 210
9876-543-210
答案 0 :(得分:1)
以下是我的回答:
(([0-9][- ]*){5})(([0-9][- ]*){5})
它将匹配10个数字,有或没有-
或空格。
之后,您可以使用*****
或任何您喜欢的内容替换第一组或第三组。
例如:
$1*****
答案 1 :(得分:1)
\d{4,5}[ -]?\d{3}[ -]?\d{2,3}
匹配的字符串:
9876543210, 98765 43210, 98765-43210, 9876 543 210, 9876-543-210
字符串不匹配:
45% 87% 78.45% 56.5% 2001, 2001-03
由于要求屏蔽上述格式的有效电话号码,因此我觉得不需要更复杂的正则表达式不匹配无效的电话号码。
检查here
Python代码:
def fun(m):
if m:
return '*'*len(m.group(1))+m.group(2)
string = "Resume of candidate abcd. His phone numbers are : 9876543210, 98765 43210, 98765-43210.Date of birth of the candidate is 23-10-2013. His percentage is 57%. One more number 9876 543 213 His percentage in grad school is 44%. Another number 9876-543-210"
re.sub('(\d{4,5})([ -]?\d{3}[ -]?\d{2,3})',fun,string)
<强>输出:强>
'Resume of candidate abcd. His phone numbers are : *****43210, *****
43210, *****-43210. Date of birth of the candidate is 23-10-2013. His
percentage is 57%. One more number **** 543 213 His percentage in grad
school is 44%. Another number ****-543-210'
有关re.sub的更多信息
re.sub(pattern, repl, string, count=0, flags=0)
返回通过替换最左边的非重叠获得的字符串 替换repl在字符串中出现模式。如果 找不到模式,字符串返回不变。 repl可以是一个 字符串或函数;
答案 2 :(得分:0)
只是为了帮助你...我会用python做的。
使用re
模块搜索类似数字的字符串:
import re
num_re = re.compile('[0-9 -]{5,}')
with open('/my/file', 'r') as f:
for l in f:
for s in num_re.findall(l):
# Do some addition testing, like 'not starting with' or any
l.replace(s, '!!!MASKED!!!')
print l
我并不是说这段代码已经完成,但它应该会帮助你。
顺便说一句,为什么我会使用这种方法:
您可以轻松添加任何您喜欢的测试来修复误报。
可读。