编辑电话号码

时间:2010-03-30 20:29:47

标签: regex

我需要在用户生成的内容中隐藏电话号码和其他联系方式,以便提供在线介绍服务。输入是随机分类广告,因此我想要替换看起来像电话号码的任何东西(例如:3个或更多数字的字符串)(电话号码隐藏),也可能删除一些异国情调的电子邮件地址。

这样做的最佳方式是什么?

def redact_contact_details(s):
    # redact phone numbers
    ...
    # redact e-mail addresses
    ...
    # redact web addresses
    ...

3 个答案:

答案 0 :(得分:2)

在Python中,用字符串s中的三个点替换三个或更多数字:

import re
s = re.sub(r'\d{3,}', '...', s)

“电子邮件地址的外来符号”对我来说很难解析;也许你的意思是像

这样的东西
s = re.sub(r'[\w.]+@[\w.]+', '<email redacted>', s)

答案 1 :(得分:1)

通过网址,我猜你的意思是网址。您可以创建一个包含所有可能域(".ca",".com",".uk"....)的数组。然后,您可以对包含其中一个域的任何“单词”运行正则表达式替换。

要进行替换,您可以使用Alec Martelli的代码,而不是将'@'放在替换中,放置域数组的连接。联接功能在this站点上进行了说明。

如果在perl我会做匹配,如:

my $domainsString = join("|", @arrayOfPossibleDomains);
$s =~ s/\w+[$domainString]\w+/......./g;

答案 2 :(得分:0)

您可以创建一个简单的函数,只需用“。”替换任何字母数字字符。或者你想要的任何其他角色。

例如:

function HideInput($input) {
    $input = preg_replace("([a-zA-Z0-9])", "*", $input);
    return $input;
}