码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式-找出电话号码

时间:2018-04-17 22:19:41      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:电话号码   不同   长度   需要   顺序   dal   col   imp   表示   

将下列电话号码匹配出来

(021)88776543      010-55667890     10086     02584453362     0571 66345673      (0931)5763589    

import re 
text = ("(021)88776543     010-55667890    10086     02584453362    0571 66345673    (0931)5763589")
k = re.findall(r\(0\d{2,3}\)\d{7,8}|0\d{2,3}[- \)]?\d{7,8}|\d+,text)
print(k)
[‘(021)88776543‘, ‘010-55667890‘, ‘10086‘, ‘02584453362‘, ‘0571 66345673‘]

()在正则表达式里其特殊含义,所以要匹配字符"(",需要用"\("。

“?”表示前面的字符是可有可无的。

“\d”表示数字字符,“+”表示任意数字字符长度。

“\d{7,8}”表示7位或8位的数字字符。

“|”代表或者的意思,使用“|”时,要特别提醒注意的是不同条件之间的顺序。匹配时,会按照从左往右的顺序,一旦匹配成功就停止验证后面的规则。


import re 
text = ("(021)88776543     010-55667890    10086     02584453362    0571 66345673    (0931)5763589")
k = re.findall(r‘[\(0]\d{2,3}[- \)]?\d{7,8}|\d+‘,text)
print(k) 
[‘(021)88776543‘, ‘010-55667890‘, ‘10086‘, ‘02584453362‘, ‘0571 66345673‘]

两种方式都能够匹配出号码。
括号通常都是成对出现的,第二种方式没有将括号两边关联到一起,假如文本中不仅有号码,还有其他丰富的信息。那用第二种方式会匹配出(0134-4587650或
(078 99999999或065)34343434或012345674567这样的组合出来。


 

正则表达式-找出电话号码

标签:电话号码   不同   长度   需要   顺序   dal   col   imp   表示   

原文地址:https://www.cnblogs.com/congcong826/p/8869991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!