Python之第六章 内置容器 --- 正则表达式

目录

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()方法


Python之第六章 内置容器 --- 正则表达式

1.定义

        用于描述字符串的复杂文本规则的代码,一般用于查询匹配

2.常见元字符

        作用 --- 表示特殊含义,一般为范围性、不好确切描述的字符串

字符 功能
. 匹配任意个字符
[ ] 匹配[ ]中列举的字符
\d 匹配0-9的数字
\D 匹配非数字
\s 匹配空白(空格、tab)
\S 匹配非空白
\w 匹配0-9、a-z、A-Z、下划线、汉字
\W 匹配非0-9、a-z、A-Z、下划线、汉字

3.数量元字符

字符 功能
* 匹配前面的字符0次或多次、可有可无
匹配前面的字符1次或0次,至少有1次,要么没有
+ 匹配前面的字符1次或多次
{m} 匹配前面的字符出现m次
{m,} 匹配前面的字符至少出现m次
{m,n} 匹配前面的字符至少出现m次,至多出现n次

4.边界字符

字符 功能
^ 行首
$ 行尾
\b 匹配单词的开始或结束,分界符为空格或其他
\B 匹配非单词边界

5.其他元字符

字符 功能
[ ^ ] 排除
\ 转义

6.分组元字符

字符 功能
| 匹配左右两边任意一个表达式
(ab) \将括号中的字符作为一个分组

7.实例:

例1 匹配8位qq号

 ^\d{8}$

例2 匹配任意元音字母

[aeiou]

例3 匹配省份证号:18位,前17位为数字,最后一位为x或X进行效验

(^\d[17])(\d|X|x)$

例4 匹配输入的163、126、qq、邮箱,前面至少5位,最多11位

r'\w{5,11}@(163|126|qq)\.(com|cn)'

例5 检索Python文件名为:xxxx.py

r'\w+\.py\b'

8.re模块

        需要加载 --- import re

math()方法

        作用 --- 从字符串起始位置起开始查找匹配,成功返回math对象,否则返回None,只能匹配个

        格式 --- re.math(pattern,string,[ flags ])

pattern --- 使用正则表达式表示的模式字符串

string --- 要匹配的字符串

flags --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等

标志 作用
A ASCII码匹配
I 不区分大小写字母
M 将^和$应用于一行
S 使用( . )匹配所有字符
X 忽略空格、注释等

例 匹配字符串是否以mr_开头,不区分大小写

#  例 匹配字符串是否以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()方法

        作用 --- 在子字符串任意位置进行检索第一个匹配的值。成功返回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)
​
结果:

findall()方法

        作用 --- 在字符串中检索所有符合正则表达式规则的字符串,并以列表形式返回,不成功返回None

        格式 --- re.findall( pattern,string,[ flags ] )

pattern --- 使用正则表达式表示的模式字符串

string --- 要匹配的字符串

flags --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等

你可能感兴趣的:(python,python,正则表达式,开发语言)