python利用正则提取字符串中的手机号

需求:利用正则提取字符串中的手机号(假设手机号为1开头的11为数字,要求手机号前后不为数字)

待提取的字符串:str=" 15838477645dfdfdf15887988765 dfdf1157990087651fd157385367891fdf15826789876qqq15838545678a"

import re

str="15838477645dfdfdf15887988765dfdf1157990087651fd157385367891fdf15826789876qqq15838545678a"

#方法一:限制手机号开头,或者手机号前面为非数字,且手机号结尾或者以非数字结尾
pattern1="(?:^|[^\d])(1\d{10})(?:$|[^\d])"

phone_list1=re.compile(pattern1).findall(str)
#结果为:['15838477645', '15887988765', '15826789876', '15838545678']

#方法二:利用负向零宽断言,断言手机号前后不能出现数字
pattern2="(?
phone_list2=re.compile(pattern2).findall(str)
#结果为:['15838477645', '15887988765', '15826789876', '15838545678']

你可能感兴趣的:(Python学习笔记)