小编典典

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

python

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

如何在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)

我该如何做呢?


阅读 233

收藏
2021-01-20

共1个答案

小编典典

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

匹配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()

您期望什么模式?

2021-01-20