我必须从自由形式的文本中提取电话号码。
如何在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)
我该如何做呢?
此正则表达式与来自北美的典型电话号码匹配
匹配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()
您期望什么模式?