python正则表达式详解 电话号码正则表达式语法

通过前面的学习,我们知道了调用Requests库可以爬取HTML页面,调用Beautiful Soup库可以解析HTML页面 。但是通常一个HTML页面拥有非常多的信息,你总不能全部拿过来再手动修改吧,所以就需要使用Re正则表达式来提取页面的关键信息 。
正则表达式是什么?Re:Regular expression,可以简洁、优雅的表达一组字符串的表达式 。
举个例子:
"Py""Pyt""Pyth""Pytho""Python"以上这组字符串有什么相似之处呢?没错,就是它们都是以”Py”开头的 。
我们用了五行才把所有的字符串枚举一遍,如果换成使用Re呢?一行OK!
Py(t|th|tho|thon)?N这只是五行字符串,如果是成千上万行呢?那正则表达式用起来岂不是特别的爽 。
“一行胜千言” — 正则表达式正则表达式最最本质的特征就是:简洁、优雅、一行胜千言 。
在我看来,就像是跟苹果LOGO似的,极简之美环绕其周 。
还有一个词:求同存异 。
下面来看看正则表达式的语法:
正如上面所展示的,正则表达式由字符和操作符构成 。

python正则表达式详解 电话号码正则表达式语法


常用操作符
来看一些经典的正则表达式例子:
^[A-Za-z]+$ 由26个字母组成的字符串^-?d+$ 整数形式的字符串[1-9]d{5} 中国境内邮政编码d{3}-d{8}|d{4}-d{7} 国内电话号码Python中的Re库Python为正则表达式提供了标准库Re,用于匹配字符串 。
调用Re库:
import re正则表达式的表示类型:
  • Re库采用raw string类型表示正则表达式,形式为:r’text’ 。
例如:r'[1-9]d[5]’
raw string 类型是原生字符串类型,不能对转义字符进行再次转义 。
  • Re库还可以采用string类型表示正则表达式,更为繁琐,形式为’text’ 。
例如:'[1-9]\d{5}’
前一个”是转义字符 。
当正则表达式包含转义字符时,更推荐使用raw string类型 。
Re库的基本方法:
先来介绍一下Match对象:
Match对象是一次匹配的结果,包含很多的匹配信息 。
和response对象一样,Match对象也有一些属性和方法 。
python正则表达式详解 电话号码正则表达式语法


Match对象的属性
python正则表达式详解 电话号码正则表达式语法


Match对象的方法
前面已经介绍过如何调用对象的属性和方法了,这里就不再赘述,可以百度做深入了解 。
python正则表达式详解 电话号码正则表达式语法


Re库的六个基本方法
下面着重讲解一下search方法:
re.search(pattern, string, flags=0)在一个字符串中搜索匹配正则表达式的第一个位置,返回Match对象 。
  • pattern:正则表达式的字符串或者原生字符串表示
  • string:带匹配的字符串
  • flags:正则表达式使用时的控制标记

python正则表达式详解 电话号码正则表达式语法


flags标记取值
# 使用search方法匹配字符串match = re.search(r'[1-9]d{5}', 'A100001', flags=re.I)# 匹配成功则返回匹配后的字符串if match:print(match.group(0))注意:Match对象返回匹配结果,所以说Match返回值是bool型变量,故用条件语句判断 。
Re库的方法使用起来并没有太大的难度,下面给出剩余方法总结:
re.match(pattern, string, flags=0)从一个字符串的开始位置起匹配正则表达式,返回Match对象 。
参数同上 。

推荐阅读