目录
Python之第六章 内置容器 --- 正则表达式
1.定义
2.常见元字符
3.数量元字符
4.边界字符
5.其他元字符
6.分组元字符
7.实例:
例1 匹配8位qq号
例2 匹配任意元音字母
例3 匹配省份证号:18位,前17位为数字,最后一位为x或X进行效验
例4 匹配输入的163、126、qq、邮箱,前面至少5位,最多11位
例5 检索Python文件名为:xxxx.py
8.re模块
math()方法
例 匹配字符串是否以mr_开头,不区分大小写
例 验证输入的手机号为中国移动
search()方法
例
findall()方法
用于描述字符串的复杂文本规则的代码,一般用于查询匹配
作用 --- 表示特殊含义,一般为范围性、不好确切描述的字符串
字符 | 功能 |
---|---|
. | 匹配任意个字符 |
[ ] | 匹配[ ]中列举的字符 |
\d | 匹配0-9的数字 |
\D | 匹配非数字 |
\s | 匹配空白(空格、tab) |
\S | 匹配非空白 |
\w | 匹配0-9、a-z、A-Z、下划线、汉字 |
\W | 匹配非0-9、a-z、A-Z、下划线、汉字 |
字符 | 功能 |
---|---|
* | 匹配前面的字符0次或多次、可有可无 |
? | 匹配前面的字符1次或0次,至少有1次,要么没有 |
+ | 匹配前面的字符1次或多次 |
{m} | 匹配前面的字符出现m次 |
{m,} | 匹配前面的字符至少出现m次 |
{m,n} | 匹配前面的字符至少出现m次,至多出现n次 |
字符 | 功能 |
---|---|
^ | 行首 |
$ | 行尾 |
\b | 匹配单词的开始或结束,分界符为空格或其他 |
\B | 匹配非单词边界 |
字符 | 功能 |
---|---|
[ ^ ] | 排除 |
\ | 转义 |
字符 | 功能 |
---|---|
| | 匹配左右两边任意一个表达式 |
(ab) | \将括号中的字符作为一个分组 |
^\d{8}$
[aeiou]
(^\d[17])(\d|X|x)$
r'\w{5,11}@(163|126|qq)\.(com|cn)'
r'\w+\.py\b'
需要加载 --- import re
作用 --- 从字符串起始位置起开始查找匹配,成功返回math对象,否则返回None,只能匹配个
格式 --- re.math(pattern,string,[ flags ])
pattern --- 使用正则表达式表示的模式字符串
string --- 要匹配的字符串
flags --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等
标志 | 作用 |
---|---|
A | ASCII码匹配 |
I | 不区分大小写字母 |
M | 将^和$应用于一行 |
S | 使用( . )匹配所有字符 |
X | 忽略空格、注释等 |
# 例 匹配字符串是否以mr_开头,不区分大小写
import re
p = r'mr_\w+' # 模式字符串
str1 = 'MR_SHOP wr_shop'
w = re.match(p, str1, re.I)
print(w)
# 返回的对象内置多个功能方法
print('匹配值的起始位置:', w.start())
print('匹配值得结束位置:', w.end())
print('匹配位置的元组:', w.span())
print('匹配的数据:', w.group())
结果:
匹配值的起始位置: 0
匹配值得结束位置: 7
匹配位置的元组: (0, 7)
匹配的数据: MR_SHOP
str2 = '123MR_SHOP mr_shop'
n = re.match(p, str2, re.I)
print(n)
结果:
None
# 例 验证输入的手机号是否为中国移动的号码
import re
m = input('请输入手机号:')
p = r'(13[4-9]\d{8})$|(15[01289])\d{8}$'
mt = re.match(p, m)
if mt == None:
print('该手机号不是移动号段')
else:
print('是有效的中国移动手机号')
结果:
请输入手机号:13499999999
是有效的中国移动手机号
作用 --- 在子字符串任意位置进行检索第一个匹配的值。成功返回search对象,不成功 返回None
格式 --- re.searc(pattern,string,[ flags ] )
pattern --- 使用正则表达式表示的模式字符串
string --- 要匹配的字符串
flags --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等
import re
p = r'mr_\w+' # 模式字符串
str1 = '123MR_SHOP wr_shop'
w = re.search(p, str1, re.I)
print(w)
结果:
作用 --- 在字符串中检索所有符合正则表达式规则的字符串,并以列表形式返回,不成功返回None
格式 --- re.findall( pattern,string,[ flags ] )
pattern --- 使用正则表达式表示的模式字符串
string --- 要匹配的字符串
flags --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等