使用正则表达式从python中的自由格式文本中提取电话号码

发布于 2021-01-29 15:01:35

我必须从自由形式的文本中提取电话号码。

如何在python中使用reg-ex进行管理?

我找到了一个,以便提取电子邮件地址。https://gist.github.com/dideler/5219706

我已经通过使用电话号码正则表达式而不是电子邮件地址正则表达式实现了相同的方法,但是我无法获得输出。

def get_phoneNumber(text):
        phone_number = ""
        regex = re.compile("((\(\d{3,4}\)|\d{3,4}-)\d{4,9}(-\d{1,5}|\d{0}))|(\d{4,12})")

        for phoneNumber in get_phoneNumbers(text, regex):
                phone_number = phone_number + phoneNumber + "\n"

        return phone_Number

def get_phoneNumbers(s, regex):
        return (phoneNumber[0] for phoneNumber in re.findall(regex, s)

我该如何做呢?

关注者
0
被浏览
143
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    此正则表达式与来自北美的典型电话号码匹配

    匹配3334445555、333.444.5555、333-444-5555、3334445555,(333)4445555及其所有组合,例如333
    4445555,(333)4445555或333444-5555。与国际符号+13334445555不匹配,但与+1 333
    4445555中的国内部分匹配。

    \(?\b[2-9][0-9]{2}\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}\b
    

    资料来源:RegexBuddy

    以下Python代码遍历所有匹配项

    for match in re.finditer(r"\(?\b[2-9][0-9]{2}\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}\b", subject):
        # match start: match.start()
        # match end (exclusive): match.end()
        # matched text: match.group()
    

    您期望什么模式?



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看