活动地址:优快云21天学习挑战赛
生活要有目标,但我们不是为了目标而生活
有一段时间没接触Python了,正好最近闲了一点,那就重新捡起来吧。
先跟一下活动吧,那就从正则表达式开始。
正则表达式嘛,一早就是在资源管理器找一个文件时只记住文件名中的一个或多个字,总是用的*和?,这个可以说正则表达式中常见的限定符了。
而正则表达式的符号有很多。可心分为几类。
一、字符集
1. 预定义字符
预定义字符前面会用一个 “\” 表示,这些字符不会在匹配过程中匹配自身。
序号 | 类别 | 描述 |
1 | \D | 匹配非整数,与[^0-9] 作用相同 |
2 | \d | 匹配整数,与[^0-9] 作用相同 |
3 | \S | 匹配非打印字符 ,与[^\t\r\f\n\v] 作用相同 |
4 | \s | 匹配打印字符 ,与[\t\r\f\n\v] 作用相同(空白字符) |
5 | \W | 匹配非字母、数字、下画线,与[^A-Za-z0-9]相同 |
6 | \w | 匹配字母、数字、下画线,与[A-Za-z0-9]相同 |
2、限定符
限定符可以指定匹配次数的字符
序号 | 类别 | 描述 |
1 | * | 匹配字符串出现0次或多次 |
2 | \ | 将后续字符标记为特殊字符、转义、向后使用 |
3 | ? | 匹配字符串出现0次或1次 |
4 | + | 匹配字符串出现1次或多次 |
5 | | | 构造或的关系 |
6 | () | 匹配一个字符串的开始和结束 |
7 | {} | 指定匹配次数 |
8 | [] | 匹配字符集合 |
9 | . | 匹配除\n 外的任意单个字符 |
3、定位符
定位符用于限定表达式,匹配所想指定内容的开头或者结尾
序号 | 类别 | 描述 |
1 | \B | 匹配非字符边界 |
2 | \b | 匹配字符边界 |
3 | $ | 匹配字符串结束的位置 |
4 | ^ | 匹配字符串开始的位置 |
4、非打印字符
非打印字符是在打印情况下不可见的字符
序号 | 类别 | 描述 |
1 | \r | 匹配回车符 |
2 | \n | 匹配换行符 |
3 | \t | 匹配制表符 |
4 | \f | 匹配换页符、等于\x0c |
5 | \v | 匹配垂直制表符,等于\x0b |
二、re模块
re模块是Python 标准库中的一个模块,包含了使用正则表达式提取或替换原字符串内容的重要方法。
以下先来几个常见的方法
1、search
search 方法用于搜索字符串,当遇到第一个满足条件的子串就会返回。有三上参数 pattern 、string、flags。
(1)pattern: 用于匹配的正则表达式。
(2)string: 待处理的原字符串。
(3)flags:标志位,用于指定在查找过程中是否处理大小写等。参数可选,默认为0。
标志位
re.I 忽略大小写 re.M 支持匹配多行 影响^和$ re.S 匹配任意字符 re.U 匹配Unicode模式 影响\w,\W,\b,\B re.L做本地化识别(locale-aware)匹配
re.X 可以通过更灵活的格式,将正则表达式写得更易于理解2、match
与search方法相同
区别:match方法会从字符串开头进行匹配,为满足条件直接返回None
search方法会搜索整个字符串,遇到第一个满足条件的就返回,始终未匹配到才返回None
3、sub
sub方法用于替换原字符中的子串,参数分别是pattern、repl、string、count、flags.
(1)pattern: 用于匹配的正则表达式。
(2)repl: 一个字符串或者一个函数表达式
(3)string: 待处理的原字符串。
(4)count: 表示匹配次数。参数可选,默认为0.
(5)flags:标志位,用于指定在查找过程中是否处理大小写等。参数可选,默认为0。
4、findall 与 finditer
findall 与 finditer 方法老师用于查找子串,包含的参数分别是pattern、string 、flags.
5、split
split 方法用于分割捕获到的子串,并以列表形式返回。