网络爬虫——正则表达式用法及实例

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43972621/article/details/85925241

正则表达式

简单来说,正则表达式就是描述字符串的一套规则。比如,我们想找出一个网页中的所有URL链接,其他的信息需要过滤掉。那么此时,我们可以观察链接的格式,然后写一个正则表达式来表示所有的电子邮件。随后,我们可以利用该表达式从网页中提取出所有满足该规则的URL链接。正则表达式的功能非常强大,在爬虫的实际项目中,对于处理特定格式的信息,经常需要用到正则表达式。

在Python中,可以使用re模块来实现Python正则表达式。

一、正则表达式基础知识

正则表达式学习其实非常简单,就是有较多的需要记的字符、字符功能。为了能够有一个系统的i思维去把握正则,我将会从原子、元字符、模式修正符与懒惰模式等方面介绍。

  1. 原子
    原子——正则表达式中最基本的单位(普通字符、非打印字符、通用字符、原子表)

    普通字符
    数字、大小写字母、下划线等都可作为原子使用。

    非打印字符

    符号 含义
    \n 用于匹配一个换行符
    \t 用于匹配一个制表符

    通用字符

    符号 含义
    \w 匹配任意一个字母、数字或下划线
    \W 匹配除字母、数字或下划线以外的任意一个字符
    \d 匹配任意一个十进制数
    \D 匹配除十进制数以外的任意一个字符
    \s 匹配任意一个空白字符
    \S 匹配除空白字符以外的任意一个字符

    原子表
    可以定义一组地位平等的原子,然后匹配的时候会取该原子表中的任意一个原子进行匹配。在Python中,原子表由[]来表示,如[xyz]就是一个原子表,定义了三个原子,三个原子地位平等。(另注:^xyz表示除原子表以外的任意字符)
    在这里插入图片描述

  2. 元字符
    以上是常见原子的使用,一般需要结合元字符才能发挥正则表达式的强大功能。
    元字符,在正则表达式中即具有特殊含义的字符。(另注:| 模式选择符)

    符号 含义
    . 匹配除换行符以外的任意字符
    ^ 匹配字符串的开始位置
    $ 匹配字符串的结束位置
    * 匹配0次、1次或多次前面的原子
    + 匹配1次或多次前面的原子
    {n} 前面的原子恰好出现n次
    {n,} 前面的原子至少出现n次
    {n,m} 前面的原子至少出现n次,至多出现m次
    () 模式单元符
  3. 模式修正符
    所谓模式修正符,即在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义,从而实现一些匹配结果的调整功能。

符号 含义
I 匹配时忽略大小写(Ignore的首字母)
M 多行匹配(Multiple的首字母)
L 做本地化识别匹配
U 根据Unicode字符及解析字符
S 让.匹配包括换行符,可以匹配任意字符

在这里插入图片描述

  1. 贪婪模式与懒惰模式

    贪婪模式核心:尽可能的多匹配,懒惰模式核心:匹配成功一次就不再匹配。
    贪婪模式在第一次匹配成功后,不会停止,一直到整个待匹配内容的最后。
    懒惰模式在第一次匹配成功后就会停止,就近原则。
    在这里插入图片描述

二、正则表达式常用函数

常见的正则表达式函数有 re,match()re,search()全局匹配函数re,sub()

re.match()——源字符串的开头进行匹配,要求第一个字符就匹配成功
re.search()——全文进行检索匹配,与match()最大不同是,在全文在进行检索并匹配
在这里插入图片描述
全局匹配函数(re.findall)
需先对正则表达式进行预编译,pattern=re.compile(".python."),返回的是list集合
在这里插入图片描述
re.sub()函数
re.sub(pattern,rep,string,max)——rep:要替换成的字符串,max:可选项,最多替换次数

三、正则表达式实例

对于正则表达式的学习,实战是最好的方法。当然也需要不断地积累,做到熟能生巧。

  1. 匹配.com或.cn后缀的URL网址
    实例目的:将一串字符里面的以.com或.cn为域名的URL网址匹配出来。
    在这里插入图片描述
  2. 匹配电话号码
    实例目的:将一串字符里出现的电话号码信息提取出来。
    在这里插入图片描述
  3. 匹配电子邮件
    实例目的:将一串字符里面出现的电子邮件信息提取出来。
    在这里插入图片描述

四、结束语

最后,祝大家都能学有所成!!!

猜你喜欢

转载自blog.csdn.net/weixin_43972621/article/details/85925241