|
楼主 |
发表于 2018-8-22 11:08
|
显示全部楼层
第八节 实例之——从文本中提取所有电话号码(包括手机和座机号码)
实例来源:
[求助]提取表格里的电话号码?
http://club.excelhome.net/thread-1128457-1-1.html
(出处: ExcelHome技术论坛)
首先,分析电话号码的特征:
第一种方法:使用较严格的验证条件
其中,
1、手机号码:
为11位数字,第1位必须是1,第2位不能是0、1、2,即必须是[3-9],剩余9位可为任意数字,\d{9},综合下来,可表示为
1[3-9]\d{9}
2、固定电话号码:区号-本地号-分机号
区号:
为3位或4位的数字,后面带有“-”号,表示为:\d{3,4}-
区号可能存在,也有可能不存在,其整体出现的次数为0至1次,
综合:(\d{3,4}-){0,1},可简写为(\d{3,4}-)?
本地号:
为7至8位数字,表示为:\d{7,8}
分机号:
一般为4位以内的数字,前面带有“-”号,表示为:-\d{1,4}
分机号也有可能不存在,因此就是
(-\d{1,4})?
3个部分,连接为整体:
(\d{3,4}-)?\d{7,8}(-\d{1,4})?
3、把手机号和固定电话并列,两者之间需要加上竖线符号“|”,综合表示为:
1[3-9]\d{9}|(\d{3,4}-)?\d{7,8}(-\d{1,4})?
4、电话号码的前后都必须不能紧接有其它数字,因此,上式需要外加括号作为一个整体,然后在其前面、后面都要添加“\D?”
5、最终的结果为
\D?(1[3-9]\d{9}|(\d{3,4}-)?\d{7,8}(-\d{1,4})?)\D?
第二种,使用相对宽松的验证方法:
手机或固话至少有一组7位以上的数字:d{7,}
在其前后这可以各有以数字和-号组成的若干数字:前面为(d{3,4}-)?,后面为(-d{1,4})?
综合为:
\D?((\d{3,4}-)?\d{7,}(-\d{1,4})?)\D?
第三种,使用最宽松的验证方法:
手机或固话,都是以数字开头和结尾,且中间包含5个以上的数字或-号:
\D?(\d[0-9-]{5,}\d)\D?
本例演示动图中,采用最为严格的验证模式,即第一种方法得到的最终表达式。
演示如下:
|
评分
-
1
查看全部评分
-
|