爬虫快速上手之正则表达式总结

目录

一、正则表达式

二、查找相关方法

三、re.Match类的使用

四、re.compile()方法的使用

五、正则修饰符

六、标点符号的特殊意义

七、字母的特殊含义

八、正则替换

九、贪婪模式和非贪婪模式

十、正则表达式小结


一、正则表达式

1、概念
    正则表达式是一个特殊的字符序列,通常被用来检索、替换那些符合某个模式(规则)的文本;
    在python中需要通过正则表达式对字符串进行匹配的时候,可以使用re模块实现全部的正则表达式功能;
2、特点
    灵活性、逻辑性和功能性非常强
    可以迅速地用极其简单的方式达到字符串的复杂控制
    对于刚接触的人来说,比较晦涩难懂

二、查找相关方法

1.match和search:
        共同点:1.只对字符串查询一次 2.返回值类型都是re.Match类型的对象
        不同点:match是从头开始匹配,一旦匹配失败,就返回None;
                        search是在整个字符串里匹配
2.finditer:查找到所有的匹配数据放到一个可迭代对象里
3.findall:查找到所有的匹配数据放到一个列表里
4.fullmatch:完整匹配,字符串需要完全满足正则规则才会有结果,否则就是None

import re
from collections import Iterable

# match和search
m1 = re.match(r'hello', 'hello world')
print(m1)
m2 = re.match(r'good', 'hello, good morning') # match是从头开始匹配,一旦匹配失败,就返回None
print(m2) # None
s1 = re.search(r'good', 'hello, good morning')
print(s1)
s2 = re.search(r'Hello', 'hello, good morning') # search在整个字符串查找,找不到返回None
print(s2) # None

# finditer 返回的结果是一个可迭代对象
# 可迭代对象里的数据是匹配到的所有结果,是一个re.Match类型的对象
f1 = re.finditer(r'x', 'sdfdfkxsdjfsdxslxljfdx')
print(f1)
print(isinstance(f1, Iterable)) # True
for f in f1:
    print(f)

# findall 返回的结果为满足规则的数据组成的列表
fa = re.findall(r'x', 'sdfdfkxsdjfsdxslxljfdx')
print(fa)

三、re.Match类的使用

        当我们调用re.match、re.search或者对re.finditer方法的结果进行迭代时,拿到的数据类型都是re.Match对象

1.span() 匹配到的结果字符串的开始和结束下标((3, 12)包括3不包括12

2.group() 表示正则表达式的分组

(1)在正则表达式里使用()表示一个分组

(2)如果没有分组,默认只有一组,就是把整个正则表达式当做一个整体

(3)分组的下标从0开始

3.groups() 将得到的分组组成一个元组

4.groupdict() 获取到分组组成的字典,使用(?P<name>正则表达式) 可以给分组起名字

import re

m = re.search(r'm.*a', 'osdmsdh23nda')
# print(m) # <re.Match object; span=(3, 12), match='msdh23nda'>
# print(dir(m)) # 查看对象的属性和方法
print(m.span()) # 匹配到的结果字符串的开始和结束下标((3, 12)包括3不包括12

# 获取匹配的字符串结果
print(m.group()) # 默认拿第0组,就是把整个正则表达式当做一个整体 msdh23nda
print(m.group(0)) # msdh23nda
# print(m.group(1)) # IndexError: no such group
# 四个分组的正则表达式
m1 = re.search(r'(0.*)(2.*)(3.*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值