在开发中会有大量的处理字符串的工作 比如注册登录时的如何判断一个手机号是不是一个手机号
可以使用正则表达式来分辨过滤 在代码中的简写是(regex | regexp | re)
. 匹配任何字符字母及数字 除\n换行符外
\ 转义字符 使字符改变原来的意思
[...] 字符集[^a]表示不是a的其他字符这里不是以a开头的意思
预定义字符集 可以写在字符集中
\d [0-9] 匹配0-9中的任意数字
\D [^\d]匹配非数字
\s t/r/n/f匹配空白字符
\S匹配非空白字符
\w匹配0-9A-Za-z+下划线 数字大小字母下划线
\W [^\w]匹配非数字大小字母下划线
数量词用来匹配次数 用在字符或(...)之后
*匹配前一个字符0次或无限次
+匹配前一个字符1次或无限次
?匹配前一个字符0次或1次
{m}匹配前一个字符的m次
{m,n}m和n可以省略+?(非贪婪)匹配m次不加则匹配n次{2,6}最少匹配2次最多匹配6次;
^匹配以字符开头
$匹配以字符结尾
\A匹配字符串开头
\Z匹配字符串末尾
\b匹配\w和\W之间
\B [^\b]非\b
|或者从左至右匹配没在括号中使用时范围是全文
(...)分组 被括起来的称为一组 左边是分组 右边是编号
左边(?P=<name起一个名字>) 右边(P=<name起的名字>)
在 Python 中,我们可以使用内置的 re 模块来使用正则表达式。
有一点需要特别注意的是,正则表达式使用 对特殊字符进行转义,所以如果我们要使用原始字符串,只需加一个 r 前缀,示例:
re 模块的一般使用步骤如下:
使用 compile() 函数将正则表达式的字符串形式编译为一个 Pattern 对象
通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果,一个 Match 对象。
最后使用 Match 对象提供的属性和方法获得信息,根据需要进行其他的操作
compile 函数
compile 函数用于编译正则表达式,生成一个 Pattern 对象,它的一般使用形式如下:
import re将正则表达式编译成 Pattern 对象pattern = re.compile(r'\d+')
修饰符号 描述
re.I 使用匹配对大小写不敏感(不区分大小写)
re.S 使.匹配包括换行符在内的所有字符
re.M 多行匹配
re.L 做本地化识别
在上面,我们已将一个正则表达式编译成 Pattern 对象,接下来,我们就可以利用 pattern 的一系列方法对文本进行匹配查找了。
Pattern 对象的一些常用方法主要有:
match 方法:从起始位置开始查找,一次匹配
search 方法:从全文开始查找,一次匹配
findall 方法:全文开始全部匹配,返回列表
finditer 方法:全文开始全部匹配,返回迭代器
split 方法:全文开始分割字符串,返回列表
sub 方法:全文替换