AI智能
改变未来

Python爬虫提取神器,正则表达式(re模块),全程干货!


python正则表达式(re模块)

什么是正则表达式

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符")。正则表达式使用但个字符串来描述、匹配一系列匹配某个句法规则的字符串。

正则字符简单介绍

普通字符

普通字符包括没有显示指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其它符号

特殊字符

非打印字符

非打印字符也可以是正则表达式的组成部分。

量词

量词的三个重要概念

贪婪(贪心)如"*"字符,贪婪量词会首先匹配整个字符串,尝试匹配时,它会选定尽可能多的内容,如果失败则回退一个字符,然后再次尝试,回退的过程就叫做回溯,它会每次回退一个字符,直到找到匹配的内容或者没有字符可以回退。相比下面两种贪婪量词对资源的消耗是最大的。

懒惰(勉强)如"?",懒惰量词使用另一种方法匹配,它从目标的起始位置开始尝试匹配,每检查一个字符,并寻找它要匹配的内容,如此循环直到字符串结尾处。

占有如"+",占有量词很像贪心式量词,它会选择尽可能多的内容,然后尝试寻找匹配内容,但它只尝试一次,不会回溯。就好比先抓一把石头,然后从石头中挑出黄金。

re模块中常用功能函数

compile()

编译正则表达式模式,返回一个对象的模式。(可以把一些常用的正则表达式编译成正则表达式对象,这样可以提高效率)。

re.compile(pattern,flags=0)

pattern:编译时用的表达式字符串。

flags:编译标志位,用于修改正则表达式,如:是否区分大小写,多行匹配等。常用的flags有:

pattern对象的常用方法有:match()、search()、finall()、finder()、split()、sub()、subn()。

(1)match()方法

该方法用于查找字符串的头部,它只要找到一个匹配的结果就返回。(这个方法并不是完全匹配。当pattern结束时若string还要剩余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符'$')。

说明:string是待匹配的字符串,pos和endpos指定字符串的起始和终点的位置,当不指定是,默认从头部开始匹配,当匹配成功是,返回Match对象。

count用于指定替换次数

一些注意点

1、re.match与 re.search 与 re.findall 的区别:

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。re.findall返回所有的匹配结果。

2、贪婪匹配与非贪婪匹配

*,+,?等都是贪婪匹配,也就是尽可能多的匹配,后面加上?号使其变成

惰性匹配。

注意:如果前后均有限定条件的时候,就不存在什么贪婪模式了,非匹配模式失效。

需要相关 资料的可以加微信领取相关资料备注【爬虫】

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Python爬虫提取神器,正则表达式(re模块),全程干货!