目录
例3 匹配省份证号:18位,前17位为数字,最后一位为x或X进行效验
例4 匹配输入的163、126、qq、邮箱,前面至少5位,最多11位
用于描述字符串的复杂文本规则的代码,一般用于查询匹配
作用 --- 表示特殊含义,一般为范围性、不好确切描述的字符串
字符 | 功能 |
---|---|
. | 匹配任意个字符 |
[ ] | 匹配[ ]中列举的字符 |
\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())
-
- 结果:
object; span=(0, 7), match='MR_SHOP'> - 匹配值的起始位置: 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)
-
- 结果:
object; span=(3, 10), match='MR_SHOP'>
作用 --- 在字符串中检索所有符合正则表达式规则的字符串,并以列表形式返回,不成功返回None
格式 --- re.findall( pattern,string,[ flags ] )
pattern --- 使用正则表达式表示的模式字符串
string --- 要匹配的字符串
flags --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等