re.compile.findall原理是理解了,但输出不大理解(主要是加了正则表达式的括号分组)

一开始不懂括号的分组及捕捉,看了网上这个例子(如下),然而好像还是说不清楚这个括号的规律(还是说我没找到或是我理解能力太差),还是看不出括号的规律,于是更多的尝试(第二张大图),并最后总结规律。

下图是为了尝试出括号分组的规律,下面是总结

就从最后一次匹配说起吧

分析:首先是匹配的顺序,分析某个括号时,暂时去掉其它括号,易读

第一步,先对整个‘ ’内的规则作出匹配,整体匹配,先去括号(易读),即先从s中匹配出第一个【\w+\w+\s+\w+\s+\w+】(去括号的样子),但由于没有括号将这个整体扩上,所以没有捕捉(即不用输出),第一个匹配到的大字符串是“qew rty uio”

【可以这样一个个对应】

\w+  \w+  \s+  \w+  \s+  \w+

|        |        |       |       |       |

qe     w             rty           uio

对应图

第二步,匹配到的字符串再进行匹配捕捉,即输出,现在从左往右,一个个左括号捕捉起,第一个左括号【(\w+\w+\s+\w+)】(暂时去掉了嵌套在中间的左括号,易读),则匹配到上面字符串中(“qew rty uio”)的"qew rty"(可对照上面的对应图),由于是括号内,所以捕捉(即输出)

第三步,第二个括号,\w+(\w+)\s+\w+(暂时去掉其它括号) 匹配上一括号中的字符串(“qew rty”),即是匹配到‘w’(可对照上面的对应图),由于是括号内,所以捕捉(即输出)

第四步,第三个括号,\w+\w+\s+\w+(\s+\w+)(暂时去掉其他括号)匹配并输出第一步中的字符串,即是“uio”

总结

     1、首先全部去括号的匹配,画出对应图,这样很清晰,然后看括号内的即捕捉输出,然后在匹配的文本(s)再寻找下一个匹配的大字符串,一直找下去……

2、去括号是为了清晰的分析,主要注意从第一个左括号开始分析起

3、如果是嵌套括号,如(((a)b)(c)d),若要捕捉a括号的字符,则先需要匹配最外面的括号,然后在慢慢往里面匹配,即是先匹配出d括号的内容,再在d括号里面匹配出b括号的内容,再在b括号中匹配出a括号的内容,然后所有括号里的,输出,按左边第一个括号所匹配的字符串排列:(d,b,a,c)

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

python爬虫笔记之re.compile.findall()的更多相关文章

  1. [Python爬虫笔记][随意找个博客入门(一)]

    [Python爬虫笔记][随意找个博客入门(一)] 标签(空格分隔): Python 爬虫 2016年暑假 来源博客:挣脱不足与蒙昧 1.简单的爬取特定url的html代码 import urllib ...

  2. Python爬虫笔记一(来自MOOC) Requests库入门

    Python爬虫笔记一(来自MOOC) 提示:本文是我在中国大学MOOC里面自学以及敲的一部分代码,纯一个记录文,如果刚好有人也是看的这个课,方便搬运在自己电脑上运行. 课程为:北京理工大学-嵩天-P ...

  3. python爬虫笔记Day01

    python爬虫笔记第一天 Requests库的安装 先在cmd中pip install requests 再打开Python IDM写入import requests 完成requests在.py文 ...

  4. Python爬虫笔记技术篇

    目录 前言 requests出现中文乱码 使用代理 BeautifulSoup的使用 Selenium的使用 基础使用 Selenium获取网页动态数据赋值给BeautifulSoup Seleniu ...

  5. Python爬虫笔记安装篇

    目录 爬虫三步 请求库 Requests:阻塞式请求库 Requests是什么 Requests安装 selenium:浏览器自动化测试 selenium安装 PhantomJS:隐藏浏览器窗口 Ph ...

  6. Python爬虫笔记(一):爬虫基本入门

    最近在做一个项目,这个项目需要使用网络爬虫从特定网站上爬取数据,于是乎,我打算写一个爬虫系列的文章,与大家分享如何编写一个爬虫.这是这个项目的第一篇文章,这次就简单介绍一下Python爬虫,后面根据项 ...

  7. Python爬虫笔记【一】模拟用户访问之设置请求头 (1)

    学习的课本为<python网络数据采集>,大部分代码来此此书. 网络爬虫爬取数据首先就是要有爬取的权限,没有爬取的权限再好的代码也不能运行.所以首先要伪装自己的爬虫,让爬虫不像爬虫而是像人 ...

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

    为什么re.match匹配不到?re.match匹配规则怎样?(捕一下seo) re.match(pattern, string[, flags]) pattern为匹配规则,即输入正则表达式. st ...

  9. Python爬虫笔记(一)

    个人笔记,仅适合个人使用(大部分摘抄自python修行路) 1.爬虫Response的内容 便是所要获取的页面内容,类型可能是HTML,Json(json数据处理链接)字符串,二进制数据(图片或者视频 ...

随机推荐

  1. DEPLOYING NATIVE UWP (UNIVERSAL WINDOWS PLATFORM) APPS FOR JAVA DEVELOPERS & PUBLISHING THEM TO THE MICROSOFT STORE

    原文: DEPLOYING NATIVE UWP (UNIVERSAL WINDOWS PLATFORM) APPS FOR JAVA DEVELOPERS & PUBLISHING THEM ...

  2. Windows下libevent C++封装类实现(为什么要使用封装好的网络库?)

    题记 windows平台下对于服务器高并发的网络模型选型中,使用libevent是个不错的选择. 本文的背景基于:国内博客对于libevent大多介绍linux实现,大多是c语言的实现,Windows ...

  3. CPU的最小执行单位是线程,协程不需要qt支持...直接用现成的协程库就行了

    协程也就在I/O操作上才有优势,Qt事件循环,本事很多I/O已经是异步了,利用好异步(虽然都说异步有点反人类思维).因为CPU的执行最小单位是线程,协程也只是在其之上又调度而已. 我的意思是利用好异步 ...

  4. python requests模块session的使用建议及整个会话中的所有cookie的方法

    话不多说,直接上代码 测试代码 服务端 下面是用flask做的一个服务端,用来设置cookie以及打印请求时的请求头 # -*- coding: utf-8 -*- from flask import ...

  5. java之jdbc学习——QueryRunner

    jdbc是ORM框架的基础,但将数据库中的表映射到java对象,并进行增删改查,并不是一件简单的事情. 涉及到jdbc.注解和反射的一些基础知识. 以下内容来自网友的分享,并做了一些增减,作为笔记记录 ...

  6. spark streaming 接收kafka消息之三 -- kafka broker 如何处理 fetch 请求

    首先看一下 KafkaServer 这个类的声明: Represents the lifecycle of a single Kafka broker. Handles all functionali ...

  7. express 中间件的理解

    nodejs(这指express) 中间件 铺垫: 一个请求发送到服务器,要经历一个生命周期,服务端要: 监听请求-解析请求-响应请求,服务器在处理这一过程的时候,有时候就很复杂了,将这些复杂的业务拆 ...

  8. DHCP服务部署流程

    为某一局域网部署DHCP [root@dhcp ~]# yum install -y dhcp[root@dhcp ~]# rpm -ql dhcp/usr/sbin/dhcpd:dhcp服务进程 / ...

  9. Java开发桌面程序学习(十)——css样式表使用以及Button悬浮改变样式实现

    css样式表使用 javafx中的css样式,与html的有些不一样,javafx中的css,是以-fx-background-color这种样子的,具体可以参考文档JavaFx css官方文档 ja ...

  10. mk、cd、pwd、ls、touch、vi、cat、cp、mv的使用及命令快捷方式

    1 命令提示符 1.1 [ root @ oldboyedu62  ~  ] 1 2 3     4 1:登陆系统的用户身份 2:命令分割符合 3:主机名称信息 4:显示当前所在目录路径 1.2 系统 ...