congcong826

将下列电话号码匹配出来

(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”表示数字字符,“+”表示重复匹配前面的字符1到多次。

“\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这样的组合出来。


 

分类:

技术点:

相关文章: