爬虫学习笔记(三)——Re正则表达式

匹配规则:

.  任何单个字符

[]  单个字符的取值范围
[^ ]  不取括号内的字符
*  前一个字符的0至任意次
+  前一个字符的1次至任意次
? 前一字符的0或1次
|  左右表达式任意一个,相当于或运算


{m}  前一个字符M次  ab{2}c=abbc
{m,n}  前一字符m至n次
^  字符串开头
$  字符串结尾
()  分组标记,内部只能用|,(abc)=abc,(abc|aaa)=abc或aaa
\d  数字,=[0-9], \d{m}=m个数字
\w  单字符,=[A-Za-z0-9]


import re


原始字符串屏蔽反斜杠转义效果
r'\b'='\\b'  匹配一个单词边界,
'\b'  退格


Re主要函数:
match = re.search(pattern, string, flags=0)  匹配整个字符串,返回第一个符合的位置
pattern:正则表达式
string:待匹配字符串
flags:控制标记

.match(pattern, string, flags=0) 从字符串开头开始匹配正则,开头若不匹配则返回错误

.findall(pattern, string, flags=0)  返回所有匹配到的列表

.split(pattern, string, maxsplit=0, flags=0)  将匹配到的作为分隔符分割字符串
maxsplit最大分割数

.finditer(pattern, string, flags=0)  放回一个匹配结果的迭代类型

.sub(pattern, repl, string, count=0, flags=0)
repl:  替换匹配后的字符串
count:  匹配的最大替换数量


a = re.search(r'pattern','string')  一次性匹配

b = re.compile(r'pattern')  面向对象方法:提前编译匹配内容后使用
a = b.search('string')  用b替代re,已经包含编译的规则,当使用量大时可以减小开支,加快运行速度
编译后可以使用re的全部函数


re匹配后返回match对象

match对象属性:
.string  待匹配文本
.re  正则
.pos  文本匹配开始的位置
.endpos  文本匹配的结束位置

match对象的方法:
.group(0)  获得匹配后的字符串
.start()  匹配到的字符串在原字符串中的开始位置
.end()  匹配到的字符串在原字符串中的结束位置
.span()  返回(.start(), .end())


贪婪匹配:
re默认采用这种匹配方式,即返回在复合匹配要求的最长字符串
r'a.*b'  'abcdbefbghdij'  将返回abcdbefb
在匹配规则中使用?改为最小匹配,r'a.*?b'返回ab, r'a.+?b'返回'abcdb'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值