re是Python的一个第三方库。

为了能更直观的看出re的效果,我们先新建一个HTML网页文件(可直接复制):

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<footer>
<div>
<div class="email">
Email:re@qq.com
</div>
<div class="tel">
手机号:88888888
</div>
</div>
</footer>
</body>
</html>

## OK,然后我们进入主题。

re主要有三个功能:提取、匹配、替换。

1、提取findall:

re.findall(【正则表达式】, 【被提取的字符串】)

注意:返回的类型是列表



我们应如何取出上文index.html中的Email或者手机号呢:

import re

with open('index.html', 'r', encoding='utf-8') as f:
# 读取index.html
html = f.read()
# 把html中的换行符,去掉,也就是替换成空字符串,因为.不能匹配到换行符
html = re.sub('\n', '', html)
print(html)
# 定义正则表达式,注意括号
pattern_1 = '<div class="email">(.*?)</div>'
# re.findall(【正则表达式】,【被提取的字符串】),返回类型是列表
ret_1 = re.findall(pattern_1, html)
# 字符串.strip(),可以去除首位的空格和换行符
print(ret_1[0].strip())

2、匹配match:

re.match(【正则表达式】, 【被匹配的字符串】)

注意:

如果匹配成功,返回<class 're.Match'>对象;

如果匹配不成功,返回None。



我们应如何编写定义密码的正则表达式呢:

import re

# 英文字母开头,可包括应为字母,数字、下划线,总位数6-16位
password_pattern = r'^[a-zA-Z][a-zA-Z0-9_]{5,15}$'
# 定义三个密码
pass1 = '1234567'
pass2 = 'k123456'
pass3 = 'k123'
# 打印测试结果,匹配成功返回re.Match对象,不成功返回None
print(re.match(password_pattern, pass1))
print(re.match(password_pattern, pass2))
print(re.match(password_pattern, pass3))

输出结果为:

3、替换sub:

re.sub(【正则表达式】, 【替换成的字符串】, 【被匹配的字符串】)

觉得没看过sub的同学,那只能说明你看笔记不认真了,示范代码请看上上文~~


为我心爱的女孩~~

Python爬虫基础——re模块的提取和匹配的更多相关文章

  1. Python爬虫基础

    前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...

  2. 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块

    孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...

  3. Python爬虫练习(requests模块)

    Python爬虫练习(requests模块) 关注公众号"轻松学编程"了解更多. 一.使用正则表达式解析页面和提取数据 1.爬取动态数据(js格式) 爬取http://fund.e ...

  4. Python爬虫之urllib模块2

    Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...

  5. Python爬虫之urllib模块1

    Python爬虫之urllib模块1 本文来自网友投稿.作者PG,一个待毕业待就业二流大学生.玄魂工作室未对该文章内容做任何改变. 因为本人一直对推理悬疑比较感兴趣,所以这次爬取的网站也是平时看一些悬 ...

  6. python爬虫-基础入门-python爬虫突破封锁

    python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...

  7. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

  8. python爬虫-基础入门-爬取整个网站《2》

    python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...

  9. python爬虫-基础入门-爬取整个网站《1》

    python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...

随机推荐

  1. shell命令管道未读完阻塞了子进程,与等待其结束的父进程死"锁"。

    在exec执行一个子进程,我们希望使用管道取得子进程在重定向后的标准输出上的结果,同时等待子进程的结束.那么是等待子进程结束后才取管道数据,还是边取数据边等待子进程结束呢? 这里有一个调试的例子.u0 ...

  2. 解构ffmpeg(一)

    ffmpeg应用程序项目将其核心库libav*的使用或编程抽象成FilterGraph,InputFile,OutputFile,InputStream,OutputStream,InputFilte ...

  3. Condition对象以及ArrayBlockingQueue阻塞队列的实现(使用Condition在队满时让生产者线程等待, 在队空时让消费者线程等待)

    Condition对象 一).Condition的定义 Condition对象:与锁关联,协调多线程间的复杂协作. 获取与锁绑定的Condition对象: Lock lock = new Reentr ...

  4. 理解Redis的反应堆模式

    1. Redis的网络模型 Redis基于Reactor模式(反应堆模式)开发了自己的网络模型,形成了一个完备的基于IO复用的事件驱动服务器,但是不由得浮现几个问题: 为什么要使用Reactor模式呢 ...

  5. C# 8.0的计划特性

    虽然现在C# 7才发布不久,并且新的版本和特性还在增加中,但是C# 8.0已经为大家公开了一些未来可能出现的新特性. *注:以下特性只是计划,可能在将来的正式版本会有一些差异 1.Nullable R ...

  6. SpringMVC 请求/响应乱码问题解决方案

    请求乱码解决之get乱码问题 GET请求乱码原因分析 GET请求参数是通过请求行中的URL发送给Web服务器(Tomcat)的. Tomcat服务器会对URL进行编码操作(此时使用的是Tomcat设置 ...

  7. Prometheus 【目录】

    正在陆续更新,内容大体包括: rule.标签重置.cAdversior.自动发现(File 自动发现.DNS自动发现.k8s环境自动发现)等... 目录: prometheus[第一篇] Promet ...

  8. java switch语句 要点注意

    1.格式 switch(表达式){ case 常量1:语句1:break: case 常量2:语句2:break: case 常量3:语句3:break: .... case 常量n:语句n:brea ...

  9. Mac SourceTree配置Beyond Compare

    一   首先下载正版的Beyond Compare 地址:https://www.scootersoftware.com/download.php 二   如果bin文件夹下没有bcomp,打开终端命 ...

  10. 洛谷上的C语言三连击。

    注意看题目,没有0,一直错. #include<stdio.h> int panduan1(int num1,int num2, int num3); int main(){ int i, ...