Python正则表达式-查找电话号码

无聊说几句:

开始学习Python,从一本用Python编程自动化办公的书中整理,敦促自己学习的同时,也扩充一下自己的公众号。

背景:

所有人都知道,在各种软件中,我们习惯了用Ctrl+F(Windows系统)来完成查找特定的内容。当然如果处理简单的任务,比如查找固定电话号码,我们可以通过搜索区号来一个个搜索,北京搜索010,广州搜索020,之后根据搜索的结果来进一步作业。

对于大部分人来说,可能这样操作已经能够满足个人工作使用了,但是少部分人需要从大量的文字或者数据中提取出来全部的固定电话号码,就会变得非常繁琐。假定有100个号码,那就要搜索100次,1000个号码,就要搜索1000次,如果更多……工作量简直让人不忍直视!

好了,接下来介绍解决这类问题的专业户:正则表达式!

正则表达式,英文名为Regular Expression,也就是正规表达式的意思。在这种表达式中,你可以建立起自己的任何一个规则,来完成数据的提取和操作!

假设我们要在一串文本中寻找一个固定电话号码。我们知道北京的固定电话号码格式为010-87654321,即3个数字,一个横线,8个数字,三部分组成。

如果我们用常规的编程,需要根据查找的字符的不同来编写不同的方法来完成查找,如果条件够多,那代码也就越复杂。

用正则表达式查找文本:
代码如下:


20161214-Python正则表达式-查找电话号码1.png

结果如下:


20161214-Python正则表达式-查找电话号码2.png

Python中,正则表达式的函数都在re模块中。因此在一开始,需要导入re模块:

>>>Import re

re模块中的compile函数,功能类似一个筛选器,通过指定规则或者指定格式的数据筛选,完成数据的提取。‘\d’表示一个数字字符,\d\d\d-\d\d\d\d\d\d\d\d表示三个数字,一个横线,八个数字的字符串格式,只要匹配这样的字符串,就会被匹配出来。r表示后面的\d不是转义字符,如果不加r,格式表达应为\d\d\d-\d\d\d\d\d\d\d\d,会显得比较复杂。

*补充一下,

  • \d 0-9的任何数字
  • \D 除0-9的数字以外的任何字符
  • \w 任何字母、数字或者下划线
  • \W 除字母、数字或者下划线以外的任何字符
  • \s 空格、制表符或者换行符
  • \S 除空格、制表符或者换行符以外的任何字符*

然后我们在findPhoneNum上调用search(),搜索字符串中符合findPhoneNum定义好的规则的字符串。

group()匹配正则表达式的结果,group(1),表示多表达式中的第一部分,group(2)表示多表达式的第二部分。因为我们只有一组,所以没有分别,例如如果表达式写成如下方式:


Python正则表达式-查找电话号码_第1张图片
20161214-Python正则表达式-查找电话号码3.png

我们能够很清楚的了解到group()的用法,当然了,我觉得上面的太复杂了,写成另外一种方式会更简单:


Python正则表达式-查找电话号码_第2张图片
20161214-Python正则表达式-查找电话号码4.png

关于上面的代码中*的用法有些类似于windows系统中的通配符,但是又不尽相同。在之后的文章中会慢慢了解。

初学乍道,难免有错误,希望大家不吝赐教。
欢迎大家关注我的公众号


Python正则表达式-查找电话号码_第3张图片
qrcode_for_gh_26ef5be84aa6_344.jpg

或者加我微信互相分享学习:WeChat ID:34244636

你可能感兴趣的:(Python正则表达式-查找电话号码)