python爬虫笔记之re.match匹配,与search、findall区别

为什么re.match匹配不到?re.match匹配规则怎样?(捕一下seo) 

re.match(pattern, string[, flags])

pattern为匹配规则,即输入正则表达式。

string为,待匹配的文本或字符串。

网上的定义【 从要匹配的字符串的头部开始,当匹配到string的尾部还没有匹配结束时,返回None;  当匹配过程中出现了无法匹配的字母,返回None。】 

但我觉得要强调关键一句【仅从要匹配的字符串头部开始匹配!】

看看例子,你就明白了!!!想用的话,一定要看!

出现<_src.SRE_Match object at .....>表示匹配成功。

出现None表示,匹配失败或未匹配到。

总结:re.match只从待匹配的字符串或文本的开头开始匹配,即如果匹配的字符串不在开头,而是在中间或结尾,则无法匹配!

———————————————————分割线——————————————————

顺便对比下re.match、re.search、re.findall的区别

match()函数只在string的开始位置匹配(例子如上图)。

search()会扫描整个string查找匹配,会扫描整个字符串并返回第一个成功的匹配。

 re.findall()将返回一个所匹配的字符串的字符串列表

 ———————————————————分割线——————————————————

《用python写网络爬虫》中1.4.4链接爬虫中,下图为有异议代码

 这里的输出经测试,根本啥也没有,如下图

查了很久,应该是因为re.match一直匹配不到数据引起的,毕竟他只匹配开头。

将re.match改为re.search,再测试,可正常下载

分析:可能是由于书编写时,http://example.webscraping.com/页面所带的链接都是:/index/1、/index/2……且输入匹配表达式为  【   /(index/view)   】,使用的是re.match匹配,如果匹配上述的url则没问题,而现在该网站页面所带的链接为:/places/default/index/1、/places/default/index/2……所以,上文讲到的re.match的特点,从开头开始匹配,则这时候re.match就会一直匹配不上!我将它换位re.search就可以解决这个问题了。

如有错误,麻烦及时指正,谢谢!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏重庆的技术分享区

关于eslint使用规则,和各种报错对应规则。

ESLint 由 JavaScript 红宝书 作者 Nicholas C. Zakas 编写, 2013 年发布第一个版本。 NCZ 的初衷不是重复造一个轮子...

1.1K7
来自专栏重庆的技术分享区

关于eslint使用规则,和各种报错对应规则

5305
来自专栏何俊林

NDK开发才是有精华和特色的部分

通常有特色的应用都会涉及NDK开发,而NDK开发基本是C/C++开发,核心和精华也是在这块。像滤镜、美颜、美肤、人脸识别,编解码,这些出了问项目问题外,首先要过...

3013
来自专栏顶级程序员

谈谈 Python 的生成器

第一次看到Python代码中出现yield关键字时,一脸懵逼,完全理解不了这个。网上查下解释,函数中出现了yield关键字,则调用该函数时会返回一个生成器。那到...

3866
来自专栏小樱的经验随笔

记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门)

这一串代码描述是这样子,我们要绕过A-Za-z0-9这些常规数字、字母字符串的传参,将非字母、数字的字符经过各种变换,最后能构造出 a-z 中任意一个字符,并且...

1602
来自专栏公众号文章

Golang 入门系列(二)学习Go语言需要注意的坑

上一章节我们已经了解了 Go 环境的配置,不了解的,请查看前面的文章 https://www.cnblogs.com/zhangweizhong/p/94599...

1304
来自专栏Java技术栈

Redis 常用操作命令,非常详细!

nx:如果key不存在则建立,xx:如果key存在则修改其值,也可以直接使用setnx/setex命令。

1642
来自专栏Python爱好者

Python高效编程(三)

1315
来自专栏python百例

117-可变与不可变对象的效率

python是一种解释型的语言,执行效率要比C这样的编译型语言差得多,但是也应该注意它的效率。 python的各种数据类型,按更新模型可以分为可变类型(如列表...

801
来自专栏Python私房菜

你所不知道的Python | 字符串连接的秘密

字符串连接,就是将2个或以上的字符串合并成一个,看上去连接字符串是一个非常基础的小问题,但是在Python中,我们可以用多种方式实现字符串的连接,稍有不慎就有可...

1495

扫码关注云+社区

领取腾讯云代金券