隐私过滤
题目描述:
这是一道正则表达式的练习题。请同学们上网初步学习正则表达式的有关知识,然后完成本题。
在互联网上发布内容时,为了避免隐私泄露,常常需要将敏感的信息打码。给定一串文本,请你编写程序,识别具有以下特征的子串,并将其替换为三个星号“***”:
-
邮箱地址
-
手机号码
就本题而言,我们认为邮箱地址是具有以下格式的极长的字符串:用户名@域名。用户名至少含有一个字符,只能包含 ASCII 范围内的大小写英文字母,数字和这些特殊字符:“.!#$%&’*+/=?^_`{|}~-”;域名是一节或以点“.”分割的任意多节标识符,标识符至少含有一个字符,且只能含有 ASCII 范围内的大小写英文字母,数字和横线“-”。
就本题而言,我们认为手机号码是 11 位 ASCII 范围内的数字连成的字符串,前三位只能是如下范围的数字:130-139,145,147,150-153,155-159,170,176-178,180-189。且处于文本中前后的位置不能再是数字。
特别注意:邮箱字符串可能相交,这种情况下,需从左向右依次选取不相交的邮箱字符串;手机号码可能是某个邮箱的子串,这时应当选取整个邮箱串。
输入格式:
一行字符串,长度不超过 100000。
输出格式:
输出一行,为原来的文本经上述打码后的结果。
样例输入:
Hello, I am Zjl37. You can contact me at example@qq.com. My phone number is not 13501234567. I can recite pi up to 50 digits. It goes like 3.14159265358979323846264338327950288419716939937510... I have a good friend yyh. His email is not anotherexample@listen?inside.com.
样例输出:
Hello, I am Zjl37. You can contact me at ***. My phone number is not ***. I can recite pi up to 50 digits. It goes like 3.14159265358979323846264338327950288419716939937510... I have a good friend yyh. His email is not ***?inside.com.
提示:
使用 Python 的同学,应当使用内置的 re 模块。
使用 C++ 的同学,应当使用 C++11 以来标准库中的 <regex>。
时间限制: 1000ms
空间限制: 256MB
来源: Zjl37