正则语法
-
贪婪和非贪婪
当匹配次数不确定时,匹配分为贪婪和非贪婪模式
贪婪:在能够成功匹配的前提下,匹配次数尽可能多的匹配,默认情况下都是贪婪的
非贪婪:在能够成功匹配的前提下,匹配次数尽可能少的匹配,在不确定的次数后加?就是非贪婪的
如:*?,+?,??,{M,N}?,{M,}?,{,N}? (fullmatch中贪婪与非贪婪没有区别)
-
检测符号
检测符号只做检测,不会做匹配
- \b - 检测是否是单词边界(任何可以隔开单词的符号,如:空格、标点符号、字符串开头或结尾)
- ^ - 检测是否是字符串开头
- $ - 检测是否是字符串结尾
-
分支 - |
|在正则中表示或者
正则表达式1|正则表达式2|正则表达式3|… - 让字符串先个第一个正则表达式匹配,若失败则和下一个正则表达式匹配,以此类推
-
分组 - ()
- 将正则的部分内容看做一个整体进行操作
- 分组和\N配合使用控制匹配内容重复
re模块
-
.compile(正则表达式) - 编译正则表达式,创建一个正则表达式对象
re.fullmatch(正则表达式,字符串)
正则对象.fullmatch(字符串)
-
匹配
-
fullmatch(正则表达式,字符串) - 完全匹配,查看整个字符串是否和正则表达式匹配,匹配成功则返回匹配对象,否则返回None
-
match(正则表达式,字符串) - 匹配字符串开头,查看字符串开头是否与正则表达式匹配,匹配成功则返回匹配对象,否则返回None
-
匹配对象(Match对象)
-
获取匹配到的字符串
匹配对象.group() - 获取整个正则匹配到的结果
匹配对象.group(N) - 获取正则中第N个分组匹配到的结果
-
获取匹配到的字符串在原字符串中的位置
-
获取原字符串
-
-
-
查找
-
search.(正则表达式,字符串) - 在字符串中获取第一个满足正则表达式的子串,若找到了返回匹配对象,否则返回None
-
findall.(正则表达式,字符串) - 获取字符串中所有满足正则表达式的子串,返回一个列表,列表中的元素就是匹配到的子串
-
正则中没有分组 - 列表中的元素就是整个正则匹配到的子串
-
正则中有一个分组 - 匹配成功后将分组匹配到的子串作为列表元素
-
正则中有多个分组 - 匹配成功后每个匹配结果都是一个元组,元组中的元素是每个分组匹配到的内容,将元组最为列表元素
-
-
finditer(正则表达式,字符串) - 获取字符串中所有符合正则表达式的子串,返回一个迭代器,迭代器中的元素就是匹配对象
-
-
字符串替换
sub(正则表达式,新字符串,原字符串) - 将原字符串中所有满足正则表达式的子串全部替换成新字符串
-
字符串分割
split(正则表达式,字符串) - 将字符串中满足正则表达式的子串作为切割点切割字符串
忽略大小写和多行匹配
-
忽略大小写 - 在正则表达式最前面加(?i)
-
单行匹配: .能够匹配换行符的匹配模式,在正则最前面加(?s)
默认是多行匹配: .不能匹配换行符
-
符号的转义:
在正则中有特殊意义或特殊功能的符号前加\,让它的功能消失只标示自身
在[]外独立存在且有特殊功能的符号,在[]中功能会直接消失
类和对象
-
什么是类什么是对象
类就是具有相同功能、相同属性的对象的集合(某一类事物的统称,抽象的概念)
对象就是类的实例(类的具体表现)
-
定义类 - 表述清楚是那些相同功能,相同属性的统称
语法:
class 类名:
类的说明文档
类的内容(方法、属性)
说明:
class - 关键字,固定写法
类名 - 程序员自己命名
要求:是标识符,不是关键字
规范:采用驼峰式命名,且首字母大写
见名知意
不能使用系统的函数名、类名、模块名
类的说明文档 - 和函数的说明文档一样
类的内容 - 类的内容主要包含类的方法(对象方法、类方法、静态方法)和属性(类属性、对象属性)
方法:方法就是定义在类中的函数
-
定义对象(创建对象)
语法:
类()