正则表达式是一个非常强大的字符串处理工具,几乎所有关于字符串的操作都可以使用正则表达式来完成,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的。下面,我来介绍一下 Python 中的正则表达式是怎么使用的。
它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了。否则,该字符串就是不合法的。
例如:我们判断一个字符串是否是合法的 Email 的方法是:
- 创建一个匹配 Email 的正则表达式;
- 用该正则表达式去匹配用户的输入的字符是否符合。
相关模块
我们使用 re 模块来实现正则表达式操作。 这个模块是 Python 内置模块,不需要我们另外安装。
入门实例
这里有一个字符串:
“shuwsjiwswmxpythonixkssiwmswkwxkxkx”
我想要知道里面是否含有单词 “ python ”,我们这样处理:
导入相关模块:
import re
准备好要处理的字符串:
s="shuwsjiwswmxpythonixkssiwmswkwxkxkx"
编写正则表达式:
pat="python"
进行匹配并打印结果:
result=re.search(pat,s)
print(result)
执行结果如下:
<re.Match object; span=(12, 18), match='python'>
这样就表示成功匹配到,并且标示了在字符串中的具体位置(12, 18)。
正则表达式通用知识
这里只讲基本用法,避免部分人之前还不熟悉正则表达式,导致无法往后看。
已经掌握的圈友可以忽略这一部分。
正则表达式中,我们需要了解两个概念:原子和元字符。
原子
原子是表达式中基本组成单位,每个表达式中至少要包含一个原子。
简单的说,我们要匹配的规则,都是由一个个原子组成。
例如:要匹配一个数字,对应的就是以数字作为原子。
匹配一个确定的字符串
在这里直接以要匹配的字符串作为原子。
例如在一堆名字中匹配“王五”:
s="张三李四王五赵六"
pat="王五"
result=re.search(pat,s)
print(result)
执行结果:
<re.Match object; span=(4, 6), match='王五'>
成功匹配。