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 --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等

标志作用
AASCII码匹配
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())
​
结果:
<re.Match 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()方法

        作用 --- 在子字符串任意位置进行检索第一个匹配的值。成功返回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)
​
结果:
<re.Match object; span=(3, 10), match='MR_SHOP'>

findall()方法

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

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

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

string --- 要匹配的字符串

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

White乄joker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值