python爬虫正则表达式的用法

当我们学习python爬虫的时候,不可避免的要遇到复杂的数据提取,这个时候就用到了万能的正则表达式

下面介绍几个常用的正则表达式

re.compile

compile(pattern,flags)编译之后可以直接当做正则表达式使用,举个简单的例子

pat = r'1([3,5,7]\d|(47))\d{8}$'
#其中[3,5,7]表示从3,5,7中的任意一个数字,\d表示数字,\d{8}表示的是8个数字
re_tele = re.complie(pat)
re_tele.match("15380941776")

上面是匹配电话号码的正则匹配代码

re.sub

sub(pattern, repl, string, count=0)
subn(pattern, repl, string, count=0)

功能:在目标字符串中以正则表达式的规则匹配字符串,再把他们替换成指定的字符串,可以指定替换的次数,如果不指定,替换所有的匹配字符串。

pattern:正则表达式
repl:指定的用来替换的字符串
string:目标字符串
count:最多替换次数

举个简单的例子:

str = "zxk is a good good good man"
str1 = re.sub(r"(good)","nice",str,count=2)  
#意思是将good替换成nice,只替换两个

返回的结果是:zxk is a nice nice good man,subn可以返回次数

re.findall

findall(pattern,string,flags=0)
patter:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式

功能:扫描整个字符串,并返回结果列表,如re.findall("\d","ahajkhka1")返回的就是['1']

\d 匹配数字,效果如[0-9]
\D 匹配非数字字符,效果如[^0-9]
\w 匹配数字,字母和下划线,效果同[0-9a-zA-Z_]
\W 匹配非 数字,字母和下划线
\s 匹配任意的空白符(空格,换行,回车,换页,制表),效果同[  \f \n \r \t]
\S 匹配任意的非空白符,不多说了
search(pattern,string,flags=0)
patter:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式

功能:扫描整个字符串,并返回第一个成功的匹配,注意是第一个

re.match

match(pattern,string,flags=0)
patter:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,值如下:
re.I 忽略大小写
re.L 做本地户识别
re.M 多行匹配,影响~和$
re.S 匹配包括换行符在内的所有字符
re.U 根据Unicode字符集解析字符,影响\w \W \b \B
re.X 使我们以更灵活的格式理解正则表达式

I和S最常用

举个简单的例子

re.match("www","www.baidu.com").span()  可以返回位置
#返回结果(0,3)其中0是开始的位置,3是结束的前一个位置

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1990858822@qq.com

文章标题:python爬虫正则表达式的用法

本文作者:XIAOK Z

发布时间:2019-09-01, 17:31:39

最后更新:2019-09-01, 17:48:18

原始链接:http://yoursite.com/2019/09/01/python爬虫正则表达式的用法/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏