多测师肖sir_高级金牌讲师__python之模块re模块

re 模块::正则匹配 ,使用re模块实现
1、什么是正则表达式
正则表达式是一种对字符和特殊字符操作的逻辑公司,从特定的字符中,用正则表达字符来过滤的逻辑
2、正则表达式作用
(1)快速高效的查找和分析字符,也叫模式匹配:具有查找,匹配,替换,插入,添加,删除等能力
(2)实现一个编译查找,一般在日志处理文件时用的多

3、正则表达方式:
(1)正则表达式是一种文本模式
(2)帮助我们检查字符是否与某种模式匹配
(3)re模块使python语言拥有全部的真正表达式功能,从python1.5版本起

========================================================================
认识正则表达式中特殊字符:
re模块数量词匹配:
预定义字符集匹配:
\d:数字0-9
\D:非数字
\s:空白字符
\n:换行符
\w 匹配字母数字
\W 匹配非字母数字
^:表示的匹配字符以什么开头
$:表示的匹配字符以什么结尾
:匹配前面的字符0次或n次 eg:ab (* 能匹配a 匹配ab 匹配abb )
+:匹配+前面的字符1次或n次
?:匹配?前面的字符0次或1次
{m}:匹配前一个字符m次
{m,n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是

#1、findall # 从第一个字符开始查找,找到全部相关匹配为止,找不到返回一个空列表[] #
2、compile # 编译模式生成对象,找到全部相关匹配为止,找不到返回一个列表[]
#3、match
#从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败并报错
注意:如果规则带了’+’,则匹配1次或者多次,无’+'只匹配一次
4、search
#从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则报错

===========================
实战:
导入re模块

import re

(1)findall
#第一个字符开始查找,找到全部相关匹配为止,找不到返回列表

在这里插入图片描述
以上结果:以列表的格式输出
在这里插入图片描述
#findall
import re
a=“abcdefadddddddg”
b=re.findall(“d”,a)
print(" ".join(b))

(2)match
从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败并报错
import re
match匹配是a开头的字符场景
a=“abcdefadddddddg”
b=re.match(“a”,a)
print(b)
#match匹配是不是a开头的字符场景
import re
a=“abcdefadddddddg”
b=re.match(“b”,a)
print(b)

(3)search 匹配第一个
从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则none

在这里插入图片描述

import re
a=“abcdefaddddcdddg”
b=re.search(“c”,a)
print(b)

在这里插入图片描述
(4)fullmath 完整匹配一个整体字符

在这里插入图片描述
(5)compile
ompile # 编译模式生成对象,找到全部相关匹配为止,找不到返回一个列表[]
在这里插入图片描述

如果不是整体,则返回none值

======================================================
场景一: \d 表示0-9的数字
在这里插入图片描述
import re
a=“1abcd2efadd2ddcdddg”
b=re.findall("\d",a)
print(b)

场景二:\D

import re
a=“1abcd2efadd2ddcdddg”
b=re.findall("\D",a)
print(’’.join(b))
在这里插入图片描述
场景三:\s 空白字符
在这里插入图片描述
场景四:\n 匹配一个换行符
在这里插入图片描述
场景4: ^ 匹配字符串的开头
4.1匹配是字符开头

在这里插入图片描述

4.2匹配不是字符开头

在这里插入图片描述
场景5:$ 匹配字符串的末尾
在这里插入图片描述
场景6: * 匹配0个或多个表达式 (匹配前面这个字符0次或多次)
import re
a=“abcd2eafabc”
b=re.findall(“ab*”,a)
print(b) # 结果[‘ab’, ‘a’, ‘ab’]

场景7: + 匹配1个或多个表达式
在这里插入图片描述
结果:[‘ab’, ‘ab’, ‘abbbbb’]

场景8:?匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

在这里插入图片描述
场景9:{m} 匹配前一个字符m次
import re
a=“abcd2eafabcbaaaaaabbbbb”
b=re.search(“a{4}”,a).group()
print(b)
在这里插入图片描述
场景10:{m,n} 匹配前一个字符m到n次, 包括n次,
在这里插入图片描述
备注:{ } 限制出现的次数
{n} 匹配前面紧跟字符精确到n次
{n,} 匹配前面紧跟字符最少n次
{n,m} 匹配前面紧跟字符最少n次,最多m次

=====================================
(1)group 方法
(2)span方法

#span()方法
import re
a=“123abdf”
b=re.search(“ab”,a)
print(b) # <re.Match object; span=(3, 5), match=‘ab’> #只能得到索引位
print(b.span()) #具体的索引位

group方法

import re
a=“123abdf”
b=re.search(“ab”,a)
print(b) # <re.Match object; span=(3, 5), match=‘ab’> #只能得到索引位
print(b.group()) #具体的字符

========================================
标志匹配符:
re.I 忽略大小写(常用)
#re.L 做本地化识别(locale-aware)匹配(少用)
re.M 多行匹配,能匹配到换行\n,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
#re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予更灵活的格式,以便将正则表达式写得更易于理解。
. 表示任意字符,除了换行

(1)re.I
在这里插入图片描述
import re
#(1)未使用标志匹配符
#m = re.findall(“m”, “324faMfae\n54321432”)
print(m) #结果[]
#(2)使用标志匹配符
m= re.findall(“m” ,“324fafaM54321432”,flags=re.I)
print(m) # [‘M’]

(2)re.s
import re
#(1)未使用标志匹配符
m = re.findall(“m.*5”, “324mfafae\n54321432”)
print(m) #结果[]
#(2)使用标志匹配符
#m = re.search(“m.*5”, “324mfafae\n54321432”, flags=re.S)

===================================================
sub 方法

s = “1fdsafa32gdfs4g”
r = re.sub("\D", “我”, s)
print® #我fdsafa我我gdfs我g

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

金牌j软件测试培训师肖sir

作为一个名资深IT搬运工

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

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

打赏作者

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

抵扣说明:

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

余额充值