爬虫解析Re 之(六 ) --- Re模块

正则表达式

正则表达式其实就是特殊的字符串, 帮助进行检索, 校验, 查询等行为,是对字符串操作的一种逻辑公式,

事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符”,这个“规则字符” 来表达对字符的一种过滤逻辑。

Python提供的正则表达式机制: 需要导入模块 re

正则表达式使用场景

验证的作用: 密码的验证 用户名的验证 邮箱 手机号等等

爬虫: 查询校验

正则表达式的规则

正则表达式处理字符串的强大工具, 拥有自己独特的语法, 并且拥有一个独立处理正则表达式的引擎.

正则表达式处理字符串的效率要比系统本身提供的低, 如果系统的能够完成, 就不用正则表达式

替换 ---- 将字符串中b小写字母 替换成B --- 系统的能完成直接使用系统的即可

替换 ---- 将第一个替换成B 第二个替换成 m --- 系统不能完成 使用正则表达式

在re模块下常用的方法

1. re.compile(正则表达式的语法)

  根据正则表达式语法生成对应正则表达式对象,方便复用该正则表达式

2. 正则表达式对象.match(要进行验证的字符串)

  如果正则表达式语法中没有限制头尾, 验证字符串是否以正则表达式对应字符串开头

  如果限制了头尾, 也就是限制了字符串的长度, 验证的字符串内容是否满足正则表达式的需求

  如果满足 返回的match对象 不满足返回的是None

3. 正则表达式对象.search(待查找的字符串)

  在待查找的字符串中 查找是否有正则表达式对应的字符串内容 如果有获取查找到的第一个内容 以及索引区间 找到的话返回的Match对象 找不到返回None

4. 正则表达式对象.findall(待查找的字符串)

  在待查找的字符串中 查找是否有正则表达式对应的字符串内容 将所有满足需求的字符串内容存放于列表

5. 正则表达式对象.sub(正则表达式,替换成的字符串,原字符串)

  在待查找的字符串中 替换字符串中每一个匹配的子串后返回替换后的字符串

正则规则

 1 \w      匹配字母数字及下划线
 2 \W      匹配非字母数字下划线
 3 \s      匹配任意空白字符,等价于[\t\n\r\f]
 4 \S      匹配任意非空字符
 5 \d      匹配任意数字
 6 \D      匹配任意非数字
 7 \A      匹配字符串开始
 8 \Z      匹配字符串结束,如果存在换行,只匹配换行前的结束字符串
 9 \z      匹配字符串结束
10 \G      匹配最后匹配完成的位置
11 \n      匹配一个换行符
12 \t      匹配一个制表符
13 ^       匹配字符串的开头
14 $       匹配字符串的末尾
15 .       匹配任意字符,除了换行符,re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符
16 [....]  用来表示一组字符,单独列出:[amk]匹配a,m或k
17 [^...]  不在[]中的字符:[^abc]匹配除了a,b,c之外的字符
18 *       匹配0个或多个的表达式
19 +       匹配1个或者多个的表达式
20 ?       匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
21 {n}     精确匹配n前面的表示
22 {m,m}   匹配n到m次由前面的正则表达式定义片段,贪婪模式
23 a|b     匹配a或者b
24 ()      匹配括号内的表达式,也表示一个组

re.match()

re.match(pattern,string,flags=0)

尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配的话,match()就会返回None

import re
content= "hello 123 4567 World_This is a regex Demo"

result = re.match(‘^hello\s\d\d\d\s\d{4}\s\w{10}.*Demo$‘,content)
result = re.match("^hello.*Demo$",content)               # 泛匹配,写法比上面简单
result = re.match(‘^hello\s(\d+)\sWorld.*Demo$‘,content) # 匹配字符串中具体的目标,用()括起来

print(result)
print(result.group())   # 获取匹配的结果
print(result.span())    # 获去匹配字符串的长度范围

 1 import re
 2
 3 string = ‘‘‘If you have great talents, industry will improve them;
 4 if you have but moderate abilities,
 5 industry will supply their deficiency.‘‘‘
 6
 7 # 1)元字符
 8 # 普通字符、字母、下划线、数字等ascii码字符
 9 pat = r‘a‘
10 # 非打印字符
11 pat = r‘\n‘
12 ret = re.findall(pattern=pat,string=string)
13
14 # 2)通配符
15 # y用某些特殊的字符,来表示一类字符串
16 ‘‘‘
17 \w  任意的字母、数字、下划线
18 \W  任意的非字母、数字下划线
19 \d  任意的数字
20 \D
21 \s  空白
22 \S
23 [abc]  匹配a、b或c
24 [a-fA-P1-5] 匹配a-f或A-P或者1-5中的任意一个
25 [^abc] 任意一个非abc的字符串
26 ‘‘‘
27 pat = r‘[^abc]‘
28 pat = r‘[^a-f]‘
29 pat = r‘\w‘
30 ret = re.findall(pattern=pat,string=string)
31 print(ret)
32 # 特殊字符
33 ‘‘‘
34 .   任意的可见字符
35 ^   从字符串的开头匹配
36 $   字符串以后什么为结尾
37 +   重复一到多次
38 *   重复0到多次
39 ?  重复0或者1次
40 {m} 重复每次  {,m}至多重复m次   {m,}  {m,n}
41 ‘‘‘
42 pat = r‘^If.+\n.+\n.+‘
43 # pat = r‘^If.+$‘
44 ret = re.findall(pattern=pat,string=string)
45 print(ret)
46
47 # 3) 模式修正
48 # 如果要进模式修正需要用complile将正则表达式创建成一个正则对象
49 # re.S  把多行字符串看成一行
50 # re.M  把多行字符串拆成多个单行来处理
51 # re.I  忽略大小写
52 pat = re.compile(r‘^If.+‘,re.S)
53 ret = pat.findall(string)
54 print(ret)
55
56 # 4) 贪婪模式和懒惰模式
57 string = "afadfasadfafapyasdfadsfapyafadpypyafasdfapyasfasdfdaspyafafdaspyrtyui"
58 pat = re.compile(r".*py") # 贪婪模式:按照规则进行寻找一直找到最后一个符合规则字符串为止
59 pat = re.compile(r".*?py") # 懒惰模式:按照规则进行寻找只要找到符合规则的字符串就立即停止
60 ret = pat.findall(string)
61 print(ret)

原文地址:https://www.cnblogs.com/TMMM/p/10815652.html

时间: 2024-10-04 17:32:53

爬虫解析Re 之(六 ) --- Re模块的相关文章

爬虫解析Selenium 之(九) --- Selenium模块

Selenium elenium 是一套完整的web应用程序测试系统, 包含: 1. 测试的录制(selenium IDE) 2.编写及运行(Selenium Remote Control) 3.测试的并行处理(Selenium Grid) Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上. selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript

运维学python之爬虫高级篇(六)scrapy模拟登陆

上一篇介绍了如何爬取豆瓣TOP250的相关内容,今天我们来模拟登陆GitHub. 1 环境配置 语言:Python 3.6.1 IDE: Pycharm 浏览器:firefox 抓包工具:fiddler 爬虫框架:Scrapy 1.5.0 操作系统:Windows 10 家庭中文版 2 爬取前分析 分析登陆提交信息分析登陆信息我使用的是fiddler,fiddler的使用方法就不作介绍了,大家可以自行搜索,首先我们打开github的登陆页面,输入用户名密码,提交查看fiddler获取的信息,我这

Python学习系列(六)(模块)

一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: i)引入模块:import   moduleName ii)引入模块下的函数:from moduleName import function1,function2,-- iii)引入模块下的所有函数:from moduleName import * 使用模块里的函数的方法: moduleName.function(agrs) 示例: >>> import math >

Cocos2d-x源代码解析(1)——地图模块(3)

接上一章<Cocos2d-x源代码解析(1)--地图模块(2)> 通过前面两章的分析,我们能够知道cocos将tmx的信息结构化到 CCTMXMapInfo.CCTMXTilesetInfo,CCTMXLayerInfo之中. 当中CCTMXMapInfo存储地图的信息包扩下面几块信息: - Map orientation (hexagonal, isometric or orthogonal) - Tile size - Map size - Layers (an array of TMXL

Python第十六课(模块3)

Python第十六课(模块3)    >>>思维导图>>>中二青年 模块与包 模块 """ 三种来源 1.内置的 2.第三方的 3.自定义的 四种表示形式 1.py文件(******) 2.共享库 3.文件夹(一系列模块的结合体)(******) 4.C++编译的连接到python内置的 """ 导入模块 """ 先产生一个执行文件的名称空间 1.创建模块文件的名称空间 2.执行模

第六篇 模块基础

目录 第六篇 模块基础 一 模块的四种形式 二 import和from...import 三 循环导入问题 四 模块的搜索路径 五 python文件的两种用途 六 包 第六篇 模块基础 一 模块的四种形式 啥是模块 模块是一系列功能的集合体,而函数是某一功能的集合体,因此模块可以看成是一堆函数的集合体.一个py文件内部就可以放一堆函数,因此一个py文件就可以看成一个模块.如果这个py文件的文件名为module.py,模块名则是module. 模块的四种形式 2.1 自定义模块:如果你自己写一个P

爬虫学习笔记(六)PyQuery模块

PyQuery模块也是一个解析html的一个模块,它和Beautiful Soup用起来差不多,它是jquery实现的,和jquery语法差不多,会用jquery的人用起来就比较方便了. Pyquery需要依赖lxml模块,不装的话,使用会报错. 安装 1 2 pip install lxml pip install pyquery 解析html的3种方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from pyque

运维学python之爬虫中级篇(六)基础爬虫

通过这么多天对爬虫的介绍, 我们对爬虫也有所了解,今天我们将引入一个简单爬虫的技术架构,解释爬虫技术架构中的几个模块,后面的爬虫也多是今天架构的延伸,只不过这个架构是简单的实现,对优化.爬取方式等不是很完善,主要为了方便大家对爬虫的理解和后面的编程. 1 基础架构和流程 简单的爬虫架构由以下几部分构成:爬虫调度器:总体协调其它几个模块的工作URL管理器:负责管理URL,维护已经爬取的URL集合和未爬取的URL集合网页下载器:对未爬取的URL下载网页解析器:解析已下载的html,并从中提取新的UR

Python 爬虫 解析库的使用 --- XPath

一.使用XPath XPath ,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言.它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索. 所以在爬虫时,我们完全可以使用XPath来做相应的信息提取.本次随笔中,我们就介绍XPath的基本用法. 1.XPath概览 XPath的选择功能十分强大,它提供了非常简洁明了的路径选择表达式.另外,它还提供了超过100个内建函数,用于字符串.数值.时间的匹配以及节点.序列的处理等.几乎所有我们想要定