前言: 1、match(pattern,string,flags=0) 功能:从字符串起始位置匹配⼀个模式,如果不是从起始位置匹配则返回None 2、search(pattern, string, flags=0) 功能:顺序扫描字符串,找到第⼀个匹配项结束(从左向右) 3、group() groups() span() 4、findall(pattern, string, flags=0) 功能:扫描整个字符串,并返回结果列表 5、split(pattern, string,maxsplit=0, flags=0) 6、sub(pattern, repl, string, count=0) subn类似 7、compile(pattern, flags=0)
正则表达式在敏感词过滤,手机、邮箱、密码验证以及爬虫方面使用比较广,在编程过程中可以使用网上已有的正则表达式。首先我们要能看懂正则表达式,才能合理的运用。
附上:正则表达式在线测试原子
原⼦:组成正则表达式的最⼩单位,任何字符都可以
原⼦
含义
原子
含义
d
0-9中任何⼀个字符
D
⾮0-9中的任何⼀个字符
w
0-9a-zA-Z的中任何⼀个字符 ]
W
⾮0-9a-zA-Z_的中任何⼀个字符,也可以是中文
s
nrt 空格
S
⾮nrt 空格中任何⼀个字符
.
代表除n之外的任何字符
[]
⾃⼰创建的原⼦表,[0-4]代表0-4中任何⼀个字符
b
词边界
B
⾮词边界
A
字符串开始
z
字符串的结尾
^
⾏⾸;在原⼦表中表示排除
[^]
排除原⼦表中的字符
$
⾏结尾
–
表示域,0-9就表示0 到9所有数字字符
[u4e00-u9fa5]
匹配纯中⽂
量词
量词 量词能够增强原⼦的描述能⼒
量词
含义
量词
含义
{}
重复前⼀个原⼦的次数
*
重复0次或多次
{m}
重复前⼀个原⼦的m次
+
⾄少出现1次
{m,n}
重复前⼀个原⼦的最少m次,最多n次
?
出现0次或1次
{m,}
重复前⼀个原⼦的最少m次
*? +?
匹配0次 匹配一次
()
改变优先级
x|y
匹配x或者匹配y
模式修正符
修正符
含义
修正符
含义
re.S
使.匹配所有字符
re.I
不区分大小写
re.L
本地化识别
re.M
多行匹配
re.U
根据Unicode字符集解析字符,会影响b、B、w、W
正则常用方法
参数:patter 正则表达式
string 要匹配的字符串
flag 模式修正符
返回值: 匹配成功返回⼀个Match object,失败返回Noneprint(re.match(r"1(3|5)d{9}$","13567534535")) # 结果:<_sre.SRE_Match object; span=(0, 11), match='13567534535'>
参数: patter 正则表达式
string 要匹配的字符串
flag 模式修正符
返回值:匹配成功,返回match object,否则返回Noneres = re.search(r"hello","sfsdfsdfsddhellosdfffdhello")
只有match 和search可以使用# 无命名组 res = re.search(r'(d{3,4})-(d{7,8})',"010-2343534") print(res.group(1)) print(res.group(2)) print(res.groups()) # 命名组 (?P<name>w+) ?P<组名> res = re.search(r"show/(?P<name>w+)","show/cuiccc") print(res.group('name')) print(res.group(1)) """ 结果: 010 2343534 ('010', '2343534') cuiccc cuiccc """
参数:patter: 匹配的正则表达式
string: 要匹配的字符串
flags:模式修正符
返回值:如果匹配成功返回⼀个列表,包含了所有匹配项,失败返回空列表res = re.findall(r"xx","sdfsdxxfdgdxsxxdfsxx") print(res) # 结果:['xx', 'xx', 'xx']
功能:⽤模式串做分隔符,将字符串分隔,返回分隔列表,如果模式加上括号,则分隔符会被保留
参数:patter: 匹配的正则表达式
string: 要匹配的字符串
maxsplit 匹配次数,0不限制次数
flags:模式修正符
返回值:成功返回⼦串列表,否则返回空列表# 从键盘上输入三个数求和 data = input("请输入三个整数,用逗号或空格做分隔符:") data = re.split(r"[,, ]+",data) data = [int(value) for value in data] print(sum(data))
功能:在⽬标字符串中以正则表达式的规则匹配字符串,再把他们替换成指定的字符串。可以指定替换的次数,如果不指定,替换所有的匹配字符串
参数:
pattern: 正则表达式(规则)
repl: 指定的⽤来替换的字符串
string: ⽬标字符串
count: 最多替换次数
区别:前者返回⼀个替换后的字符串,后者返回⼀个元组# 千位数 str1 = "12345645768" def replace(obj): pos = obj.span()[1] if pos % 3 == 0: return obj.group(0)+',' else: return obj.group(0) res = re.sub(r'd',replace,str1[::-1]) print(res.strip(",")[::-1]) # 结果:12,345,645,768
功能:将正则表达式模式编译成正则表达式对象,其 match() 和 search() ⽅法可⽤于匹配
参数:pattern 模式
flags 模式修饰符# 正则对象 只验证一次,后面直接调用 obj = re.compile(r"^d{3,4}-d{7,8}$") print(obj.match("233-23345345")) # 结果:<_sre.SRE_Match object; span=(0, 12), match='233-23345345'>
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算