这是一道正则表达式的练习题。请同学们上网初步学习正则表达式的有关知识,然后完成本题。
在互联网上发布内容时,为了避免隐私泄露,常常需要将敏感的信息打码。给定一串文本,请你编写程序,识别具有以下特征的子串,并将其替换为三个星号“***”:
-
邮箱地址
-
手机号码
就本题而言,我们认为邮箱地址是具有以下格式的极长的字符串:用户名@域名。用户名至少含有一个字符,只能包含 ASCII 范围内的大小写英文字母,数字和这些特殊字符:“.!#$%&’*+/=?^_`{|}~-”;域名是一节或以点“.”分割的任意多节标识符,标识符至少含有一个字符,且只能含有 ASCII 范围内的大小写英文字母,数字和横线“-”。
就本题而言,我们认为手机号码是 11 位 ASCII 范围内的数字连成的字符串,前三位只能是如下范围的数字:130-139,145,147,150-153,155-159,170,176-178,180-189。且处于文本中前后的位置不能再是数字。
特别注意:邮箱字符串可能相交,这种情况下,需从左向右依次选取不相交的邮箱字符串;手机号码可能是某个邮箱的子串,这时应当选取整个邮箱串。