day16-总结

这篇博客总结了Python的re模块,包括re.compile、fullmatch、match、search、findall、finditer、sub和split等方法的使用。同时介绍了正则表达式的忽略大小写和单行匹配技巧。此外,还探讨了面向对象编程的基础概念,如类、对象、初始化、构造函数以及类的属性和方法,包括对象方法、类方法和静态方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

re模块

re.compile(正则表达式) – 根据正则表达式创建一个正则表达式对象

re.fullmatch(正则表达式, 字符串) – 获取字符串和正则表达式完全匹配的结果,看整个字符串是否完全满足正则规则

  1. 获取匹配到的字符串
result = re.fullmatch(r'(\d{3})-([a-z]{2})', '897-yu')
print(result.group())   # 897-yu

匹配对象.group() – 获取整个正则表达式匹配到的结果

匹配对象.group(N) – 获取正则表达式中第N个分组匹配到的结果

  1. 获取匹配结果在原字符串中的位置信息,返回开始下标和结束下标(结束下标取不到)
result = re.fullmatch(r'(\d{3})-([a-z]{2})', '897-yu')
print(result.span()) # (0, 6)
  1. 获取原字符串
result = re.fullmatch(r'(\d{3})-([a-z]{2})', '897-yu')
print(result.string)

re.match(正则表达式, 字符串) – 将字符串开头和正则表达式进行匹配,如果匹配失败返回None,如果成功则返回匹配对象

re.search(正则表达式, 字符串) – 字符串中查到第一个满足正则的子串,如果没有找到返回None,如果成功返回匹配对象

re.findall(正则表达式, 字符串) – 获取字符串中所有满足正则的子串,返回值是列表,列表中的元素是满足正则的子串

注意:

如果正则里存在一个分组:

print(re.findall(r'\d{2}-[A-E]{2}', '是否23-ABss试试9223-CB;sd00-AA--009'))   # ['23-AB', '23-CB', '00-AA']
print(re.findall(r'(\d{2})-[A-E]{2}', '是否23-ABss试试9223-CB;sd00-AA--009'))  # ['23', '23', '00']  # 返回值是列表

如果正则里存在两个分组:

print(re.findall(r'(\d{2})-([A-E]{2})', '是否23-ABss试试9223-CB;sd00-AA--009'))  # [('23', 'AB'), ('23', 'CB'), ('00', 'AA')]  # 返回值是列表里包含着元组

re.finditer(正则表达式, 字符串) – 获取字符串中所有满足正则的子串,返回值是一个迭代器(序列),序列中的元素师匹配对象

result = re.finditer(r'(\d{2})-([A-E]{2})', '是否23-ABss试试9223-CB;sd00-AA--009')
# print(list(result))
for x in result:
    print(x.group(), x.group(1), x.group(2))

re.sub(正则表达式, 字符串1, 字符串2) – 将字符串2中所有满足正则的子串全部都替换成字符串1

result = re.sub(r'\d+', '+', str1)
print(result)   # 送积分换+水电费+束带结发+圣诞节发货+数据

re.split(正则表达式, 字符串) – 将字符串中满足正则的子串作为切割垫进行切割

sentence = '数据库烦得很a上课的飞机和a双方都客家话b是开放和c双方都好看和'
result = re.split(r'[a-c]', sentence)
print(result)  # ['数据库烦得很', '上课的飞机和', '双方都客家话', '是开放和', '双方都好看和']
忽略大小写和单行匹配

忽略大小写:

方法1:在正则表达式最前面加(?i)

print(re.fullmatch(r'(?i)123[a-z]', '123M'))

方法2:用re模块提供的flags

print(re.fullmatch(r'123[a-z]', '123K', flags=re.I))

单行匹配:

多行匹配(默认):’.'不能匹配换行符(默认)

单行匹配:’.'可以匹配换行符

方法1:在正则表达式的最前面加(?s)

print(re.fullmatch('123.abc', '123\nabc'))   # None

方法2:用re模块提供的flags

print(re.fullmatch('123.abc', '123\nabc', flags=re.S))

忽略大小写又单行匹配

print(re.fullmatch('(?is)123.abc', '123\nABC')) 
print(re.fullmatch('123.abc', '123\nABC', flags=re.S | re.I))

面向对象

Object Oriented Programming,原来就是面向对象的编程啊(OOP),还有OOD(面向对象的设计),OOA(面向对象的分析)。

什么是类和对象:

类:就是拥有相同属性和相同功能的对象的集合(抽象的)
对象:对象就是类的实例(类的具体的表现)

类:

语法:
class 类名:

​ 类的说明文档

​ 类的内容

说明:

class - 关键字;固定写法

类名 - 程序员自己命名

​ 要求:标识符,不是关键字

​ 规范:驼峰式命名并且首字母大写;见名知义(看见名字大概知道是个什么类);不使用系统的命名

类的说明文档 - 上个双引号开头和结尾的注释

类的内容 - 主要包含类中的属性和方法

​ 属性分为:类属性(字段)和对象属性

​ 方法分为:对象/实例方法、类方法和静态方法

注:方法就是定义在类中的函数

方法:

就是定义在类中的函数,分为三类:对象方法,类方法和静态方法

对象方法:

定义:直接定义在类中函数就是对象方法

怎么调用:要通过对象来调用 - 对象.方法名()

特点:自带参数self,而且参数self在调用的时候不需要传参,系统会自动将当前对象传给self(谁调用self就指向谁)

初始化和构造函数

1.python的类有一个特殊的对象方法叫__init__,这个方法在通过类创建对象的时候会被自动调用

补充:魔法方法-方法名以__开头并且__结尾,所有的魔法方法都不需要程序员去调用,系统会自动调用

1)创建对象的时候会自动调用类中的__init__方法

2)创建对象的时候需要参数,需要几个参数由类中的__init__方法决定

属性

属性分为类属性(字段)和对象属性

1.类属性

怎么定义:直接定义在类中的变量就是类属性

怎么使用:通过类使用 - 类.类属性

什么时候用:属性值不会因为对象不同而不一样, 例如圆的圆周率

2.对象属性

怎么定义:以’self.属性名=值’的形式定义在类中__init__方法里面

怎么使用:通过对象使用 - 对象.属性

什么时候用:属性值会因为对象不同而不一样,就定义成对象属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值