一 发送消息和正则表达式
1 . 正则介绍
Python 中的正则,本质上是嵌入在Python中的一种微小的、高度专业化的编程语言,可通过 re
这个内置模块获得。
正则表达式模式几乎和 shell 中的一样,更接近 grep -P
的效果,因为 Python 中的 re
模块提供的是类似 Perl 语言中的正则表达式。
正则表达式模式会被编译成一系列字节码,然后由用 C 编写的匹配引擎执行。
2. 陷阱
友情提示:
正则表达式语言相对较小且受限制,因此并非所有可能的字符串处理任务都可以使用正则表达式完成。
还有一些任务 可以 用正则表达式完成,但表达式变得非常复杂。 在这些情况下,你最好编写 Python 代码来进行处理;虽然 Python 代码比精心设计的正则表达式慢,但它也可能更容易理解。
3. 特殊的字符
在 Python 中有一些特殊的字符,在正则表达式模式中的作用和 shell 和 grep -P
时候有一些细微的差别
二、 re 模块的方法
其实,前面在 shell 中我们已经学习正则,这里我们主要学习的是 Python 中如何使用正则的,就是 re
模块中都有哪些方法。
接下来我们就学习几个常间的方法
1 常用方法
match() 就看开头有没有
只在整个字符串的起始位置进行匹配.匹配的成功的结果是一段普通的信息,所以在python中需要用group() 来获取这段信息
示例字符串
r.group() 获取查看匹配成功的结果
search() 只查到第一个匹配的
从整个字符串的开头找到最后,当第一个匹配成功后,就不再继续匹配。
已a开始匹配,一旦满足“a\w+"的条件就停止。
findall() 查到所有**
搜索整个字符串,找到所有匹配成功的字符串,比把这些字符串放在一个列表中返回。注意是列表返回,所以不需要借助group()来展示结果
sub() 替换
把匹配成功的字符串,进行替换。
基本语法
匹配规则,替换成的新内容, 被搜索的对象, 有相同的话替换的次数
建”a\w" 替换成100
"a\w\ 表示后面的一个 an
s 搜索的对象
2 字符串内有相同的,替换的次数,从第一个开始算
语法内都已“,” 隔开
这里用 r 来承接结果
模式不匹配时,返回原 来 s 的值
split() 分割
和 awk -F '[d]'
一样效果,以匹配到的字符进行分割,返回分割后的列表
列对下面的s进行分割
s = 'isinstance yangge enumerate www.qfedu.com 1997'
a作为分割符
1 分割一次
使用多个界定符分割字符串
r
来定义分割符
[;,\s]\s*
已【冒号 逗号 空白符】 中的一个和多个空白符 作为分割符
2. 正则分组
比如match
group() 匹配的内容
groups() 匹配的内容中的组
比如search
(?P<name>y\w+e)
这里意思是 搜寻已 y
后面多个字符到e
结束
()
并给其分组
?P
命名 固定写法
<>
里面的 内容随意
groupdict() 显示字典的格式
比如findall
整行的匹配 ,本身就是字符串的显示,所以只能显示字符串,不能匹配分组