python——爬虫学习——正则表达式与Re库-(4)
来源:互联网 发布:手机淘宝卖家如何退款 编辑:程序博客网 时间:2024/06/06 00:09
正则表达式的概念
正则表达式是用来简洁表达一组字符串的表达式
正则表达式的语法
正则表达式语法由字符和操作符构成
正则表达式的常用操作符
( ) | 分组标记,内部只能使用 | 操作符 |(abc)表示abc,(abc|def)表示abc、 def
\d | 数字,等价于[0‐9] |
\w | 单词字符,等价于[A‐Za‐z0‐9_] |
正则表达式语法实例
经典正则表达式实例
Re库
调用方式:
import re
正则表达式的表示类型
raw string 类型
re库采用raw string类型表示正则表达式,表示为:
r'text'
例如:
r'[1‐9]\d{5}'r'\d{3}‐\d{8}|\d{4}‐\d{7}'
raw string是不包含对转义符再次转义的字符串
string类型
例如:
'[1‐9]\\d{5}''\\d{3}‐\\d{8}|\\d{4}‐\\d{7}'
建议:当正则表达式包含转义符时,使用raw string
Re库主要功能函数
(1)re.search(pattern, string, flags=0)
在一个字符串中搜索匹配正则表达式的第一个位置
返回match对象
pattern : 正则表达式的字符串或原生字符串表示
string : 待匹配字符串
flags : 正则表达式使用时的控制标记
例:
>>> match = re.search(r'\d+','BIT 100081')>>> if match:... print(match.group(0))...100081
(2) re.findall(pattern, string, flags=0)
搜索字符串,以列表类型返回全部能匹配的子串
pattern : 正则表达式的字符串或原生字符串表示
string : 待匹配字符串
flags : 正则表达式使用时的控制标记
例:
>>> ls = re.findall(r'[1-9]+\d+','BIT100081 A100 B101 C102')>>> ls['100081', '100', '101', '102']
(3)re.split(pattern, string, maxsplit=0, flags=0)
将一个字符串按照正则表达式匹配结果进行分割
返回列表类型
pattern : 正则表达式的字符串或原生字符串表示
string : 待匹配字符串
maxsplit: 最大分割数,剩余部分作为最后一个元素输出
flags : 正则表达式使用时的控制标记
例:
>>> re.split(r'\d+','BIT100081 A100 B101 C102')['BIT', ' A', ' B', ' C', '']>>> re.split(r'\d+','BIT100081 A100 B101 C102',maxsplit=1)['BIT', ' A100 B101 C102']
(4) re.finditer(pattern, string, flags=0)
搜索字符串,返回一个匹配结果的迭代类型,每个迭代
元素是match对象
例:
>>> for m in re.finditer(r'\d+','BIT100081 A100 B101 C102'):... if m:... print(m.group(0))...100081100101102
(5) re.sub(pattern, repl, string, count=0, flags=0)
在一个字符串中替换所有匹配正则表达式的子串
返回替换后的字符串
repl : 替换匹配字符串的字符串
count : 匹配的最大替换次数
例:
>>> re.sub(r'\d+','change','BIT100081 A100 B101 C102')'BITchange Achange Bchange Cchange'
Re库的面向对象用法:
>>> pat = re.compile(r'\d+')>>> rst=pat.search('BIT 100081')
regex = re.compile(pattern, flags=0)
将正则表达式的字符串形式编译成正则表达式对
>>> pat = re.compile(r'\d+')>>> rst=pat.search('BIT 100081')
Match对象
Match对象的属性
Match对象的方法
例:
>>> m=re.search(r'\d+','BIT100081 A100 B101 C102')>>> m.string'BIT100081 A100 B101 C102'>>> m.re<_sre.SRE_Pattern object at 0x0296E560>>>> m.pos0>>> m.endpos24>>> m.group(0)'100081'>>> m.start()3>>> m.end()9>>> m.span()(3, 9)
贪婪匹配
Re库默认采用贪婪匹配,即输出匹配最长的子串
>>> match = re.search(r'PY.*N','PYANBNCNDN')>>> match.group(0)'PYANBNCNDN'
最小匹配
最小匹配操作符
只要长度输出可能不同的,都可以通过在操作符后增加?变成最小匹配
>>> match = re.search(r'PY.*?N','PYANBNCNDN')>>> match.group(0)'PYAN'
- python——爬虫学习——正则表达式与Re库-(4)
- 爬虫学习笔记(三)——Re正则表达式
- Python正则表达式学习(4)——re.match() 和 re.search()
- Python模块学习——re正则表达式模块
- Python正则表达式学习(3)——re.compile()
- Python正则表达式学习(5)——re.findall()
- python正则表达式——re模块
- python正则表达式——re模块
- Python正则表达式—re模块接口
- Python学习(十七)——re类与正则表达式
- python爬虫之re正则表达式库
- [笔记]python爬虫:正则表达式库re
- python3爬虫——正则表达式re详解(1)
- [Python标准库]re——正则表达式[一]
- [Python标准库]re——正则表达式[二]
- [Python标准库]re——正则表达式[三]
- [Python标准库]re——正则表达式[四]
- [Python标准库]re——正则表达式[五]
- Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes) 今天要
- sdn是什么?
- Tersorflow深度学习入门—— CIFAR-10 训练示例报错及解决方案
- mac 下使用wireshark监听网络上的数据
- Android 快速开发(一),封装一个 TopBarBaseActivity
- python——爬虫学习——正则表达式与Re库-(4)
- 一 : BlockingQueue接口
- UML 用例图中<<include>>,<<extends>>,<<uses>>的区别
- 进阶篇_STL详解(函数模板特化,类模板特化,用模板实现自己的通用算法)
- ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
- Apache 2.4 局域网发布网站
- vue2.0——v-model指令
- 2017年五一单身狗准备怎么过?
- 动态代理JDKf方式InvocationHandler、Proxy