Python爬虫学习日志(7)

正则表达式

  • RE:regular expression 或 regex

1.概念

正则表达式的作用
  • 通用的字符串表达框架
  • 简洁 表达一组字符串的表达式
  • 针对字符串表达 简洁特征 思想的工具
  • 判断某字符串的特征归属
  • 表达文本类型的特征(病毒、入侵等)
正则表达式的使用
  • 编译:将符合正则表达式语法的字符串转换成正则表达式特征
    在这里插入图片描述
正则表达式的语法:由字符和操作符构成

在这里插入图片描述

正则表达式的常用操作符

在这里插入图片描述
在这里插入图片描述

正则表达式语法实例

在这里插入图片描述

经典正则表达式实例

在这里插入图片描述

2.Re库的基本使用

正则表达式的表示类型
  • raw string 类型(原生字符串类型)
    原生字符串类型在字符串类型前加小写的 ‘ r ’。(转义符 ‘\’)
    在这里插入图片描述
  • string 类型,更繁琐
    在这里插入图片描述
    当正则表达式包含转义符时,使用raw string
Re库主要功能函数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Re库的等价用法
  • 编译后的优势:一次编译,可以多次操作。
  • 编译后的对象可以调用上述六个主要功能函数。
    在这里插入图片描述
    在这里插入图片描述
Re库主要功能函数的示例
import re
#search
match = re.search(r'[1-9]\d{5}', 'BIT 100081')
if match:
    print("search: ",match.group(0))
#match
match = re.match(r'[1-9]\d{5}', '100081 BIT')
if match:
    print("match: ",match.group(0))
#findall
ls = re.findall(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print("findall: ",ls)
#split
ls2 = re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit= 1)
print("split: ",ls2)
#finditer
for m in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'):
    if m:
        print("finditer: ",m.group(0))
#sub
ls3 = re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084')
print("sub: ",ls3)

输出结果:

search:  100081
match:  100081
findall:  ['100081', '100084']
split:  ['BIT', ' TSU100084']
finditer:  100081
finditer:  100084
sub:  BIT:zipcode TSU:zipcode
Re库的Match对象
  • Match对象的属性
    在这里插入图片描述

  • Match对象的方法

在这里插入图片描述

  • Match对象示例
import re
#search
m = re.search(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print(type(m))

print(m.string)
print(m.re)
print(m.pos, m.endpos)
print(m.group(0))
print(m.start(), m.end(), m.span())

输出结果:

<class 're.Match'>
BIT100081 TSU100084
re.compile('[1-9]\\d{5}')
0 19
100081
3 9 (3, 9)
Re库的贪婪匹配和最小匹配
  • 贪婪匹配
    在这里插入图片描述
    在这里插入图片描述
  • 最小匹配(后面添加 “?”)
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值