我有一个如下字符串:
"""350 tel: (650) 725—9327 fax: (650) 723» 1882"""
我要提取电话号码,并且在python中以相同的方式传真。
到目前为止,这是我查找电话号码的方式:
re.findall(r'[\+\(]?[1-9][0-9 .\-\(\)]{8,}[0-9 ]', string)
我如何还能找到传真号码?
答案 0 :(得分:2)
要获取给定示例的电话和传真,您可以在(?<=
后使用肯定的外观来断言左侧是电话或传真部分。
(?<=(?:tel|fax): )\(\d{3}\)\s*\d{3}[—»]\s*\d{4}\b
说明
(?<=(?:tel|fax): )
后向正向匹配以匹配电话或传真,后跟冒号和空格\(\d{3}\)
匹配左括号,3位数字和右括号\s*
匹配零个或多个空白字符\d{3}
匹配3位数字[—»]
使用字符类匹配指定字符之一\s*
匹配零个或多个空白字符\d{4}\b
匹配4位数字,后跟一个单词边界除了[—»]\s*
之外,您还可以使用\D+
一次或多次不匹配数字。
例如:
import re
string = """350 tel: (650) 725—9327 fax: (650) 723» 1882"""
print(re.findall(r'(?<=(?:tel|fax): )\(\d{3}\)\s*\d{3}[—»]\s*\d{4}\b', string))
答案 1 :(得分:1)
如果电话的格式可变,则可以使用以下方法:
import re
string = """350 tel: (650) 725—9327 fax: (650) 723» 1882"""
phone_regex = re.match(".*tel:(.*)fax:(.*)",string)
phone , fax = [ re.sub("[^0-9]","",x) for x in phone_regex.groups() ]