隐私过滤

题目描述:

这是一道正则表达式的练习题。请同学们上网初步学习正则表达式的有关知识,然后完成本题。

在互联网上发布内容时,为了避免隐私泄露,常常需要将敏感的信息打码。给定一串文本,请你编写程序,识别具有以下特征的子串,并将其替换为三个星号“***”:

  • 邮箱地址

  • 手机号码

就本题而言,我们认为邮箱地址是具有以下格式的极长的字符串:用户名@域名。用户名至少含有一个字符,只能包含 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