网站建设 推广找山东博达,制作网页难吗,贺兰网站建设,如何自己开发一个自己的网站目录 re正则表达式,一种专门用来匹配目标字符串的规则
re.match(),从头匹配一个,无则none
re.search(), 不从头匹配返回一个,无则none
re.findall(), 不从头匹配,用list返回所有
re分组
re匹配修饰符
re贪婪非贪婪
re切割和替换 re正则表达式,一种专门用来匹配目标字符串…目录 re正则表达式,一种专门用来匹配目标字符串的规则
re.match(),从头匹配一个,无则none
re.search(), 不从头匹配返回一个,无则none
re.findall(), 不从头匹配,用list返回所有
re分组
re匹配修饰符
re贪婪非贪婪
re切割和替换 re正则表达式,一种专门用来匹配目标字符串的规则
正则语法描述.匹配任意1个字符除了 \n\d匹配1位数字即0-9\D匹配1位非数字\s匹配1位空白符空格、Tab\S匹配1位非空白符\w匹配1位非特殊字符即a-z、A-Z、0-9、_、汉字\W匹配1位特殊字符[列举字符]匹配1个[ ]中列举的字符[a-z]表示匹配1个小写英文字符*匹配出现0次或任意次的一个字符\d* 表示 0个或任意个连续的数字匹配出现1次或任意次的一个字符\d 表示 1个或任意个连续的数字?匹配出现1次或0次的一个字符\d? 表示 1个数字{m}匹配出现m次的字符\d{3} 表示 连续3个数字{m,n}匹配出现从m到n次的字符\d{2,5} 表示连续2到5个数字^匹配字符串开头^a 表示以a开头的$匹配字符串结尾 b$ 表示以b结尾[^指定字符]匹配除了指定字符以外的所有字符 [^\d]表示除了数字以外的字符|匹配左右任意一个正则表达式 \d|\W 表示数字或特殊字符
re.match(),从头匹配一个,无则none match函数尝试从字符串起始位置根据正则表达式匹配一个结果
re.match(pattern正则表达式, string目标字符串)
1.如果不能从起始位置匹配成功则返回None
2.如果能从起始位置匹配成功则返回一个匹配的对象import re
my_str abc_123_DFG_456_abc
# 匹配字符串bc(注从头开始)
res re.match(bc, my_str)
print(res) # None# 匹配字符串abc(注从头开始)
res re.match(abc, my_str)
print(res) # 匹配成功返回一个 Match 对象
# Match对象.group()获取匹配的内容
print(res.group())
print(-----------)
re.search(), 不从头匹配返回一个,无则none
search函数根据正则表达式扫描整个字符串并返回第一个成功的匹配
re.search(pattern, string, flags0)
1. 如果不能匹配成功则返回None
2. 如果能匹配成功则返回一个匹配对象import re
my_str abc_123_DFG_456_abc# 匹配连续的3位数字 # \d{3}
res re.search(r\d{3}, my_str)
print(res.group())
res re.search(rbc, my_str)
print(res.group())
re.findall(), 不从头匹配,用list返回所有
findall函数根据正则表达式扫描整个字符串并返回所有能成功匹配的子串
re.findall(pattern, string, flags0)
1. 如果不能匹配成功则返回一个空列表
2. 如果能匹配成功则返回包含所有匹配子串的列表import re
my_str abc_123_DFG_456_abc# 匹配字符串中的所有连续的3位数字
res re.findall(r\d{3}, my_str)
print(res)
re分组
import re示例1正则匹配分组操作
语法(正则表达式)# 匹配手机号前3、中4、后4位数据
my_str 13155667788
# 131 5566 7788
# \d{3}\d{4}\d{4}
# (\d{3})(\d{4})(\d{4})res re.match(r(\d{3})(\d{4})(\d{4}), my_str)
print(res)
print(res.group()) # 完整的匹配结果# Match对象.group(组序号)
print(res.group(1)) # 131
print(res.group(2)) # 5566
print(res.group(3)) # 7788
print(--------------)
示例2给正则分组起别名
语法(?P分组别名正则表达式)
# 需求使用正则提取出 my_str 字符串中的 传智播客 文本
my_str diva hrefhttps://www.itcast.cn target_blank传智播客/apPython/p/divres re.search(a.*(?Ptext.*)/a, my_str)
print(res)
print(res.group()) # 完整匹配结果
print(res.group(1)) # 根据组序号取匹配的数据
print(res.group(text)) # 根据组别名取匹配的数据
示例3引用正则分组
语法(?P分组别名正则表达式).*(?P分组别名)import re
# 需求 找到字符串里反复出现3次的连续的数字my_str a123jkfjkfjg123 # None
my_str 123aq123a123 # 123
my_str 123123123 # 123
my_str 123 123123 # 123
res re.match(r(?Pnum\d)\D*(?Pnum)\D*(?Pnum)$, my_str)if res:print(匹配成功)print(res.group(1))print(res.group(num))
else:print(匹配失败)
re匹配修饰符
import rere.I匹配时不区分大小写
re.M多行匹配影响 ^ 和 $
re.S影响 . 符号设置之后.符号就能匹配\n了
# re.I匹配时不区分字母的大小写
my_str aB
res re.match(ab, my_str, flagsre.I)
print(res.group())
print(----------------)# re.M开启多行匹配模式把每一行字符串当作一个独立的字符串进行匹配
my_str aabb\nbbcc
res re.findall(^[a-z]{4}$, my_str, flagsre.M)
print(res)
res re.findall(^[a-z]{4}$, my_str)
print(res)
res re.findall([a-z]{4}, 11aabb)
print(res)
res re.findall(^[a-z]{4}$, 11aabb)
# 被匹配的字符串必须以字母开头以字母结尾
print(res)
print(----------------)# re.S让 . 也能匹配\n
my_str \nabc
res re.match(., my_str, flagsre.S)
print(res)# 多模式flagsre.S|re.M|re.I
my_str 1111\nabc
res re.findall(., my_str, flagsre.S|re.M|re.I)
print(res)
re贪婪非贪婪
import re贪婪模式在整个表达式匹配成功的前提下尽可能多的匹配
非贪婪模式在整个表达式匹配成功的前提下尽可能少的匹配
正则中的量词包括{m,n}、?、*和这些量词默认都是贪婪模式的匹配
可以在这些量词后面加?将其变为非贪婪模式。my_str divtest1/divdivtest2/div
# 贪婪模式在整个表达式匹配成功的前提下尽可能多的匹配
re_obj re.match(div.*/div, my_str)
print(re_obj.group()) # 获取整个正则表达式匹配的内容
print(----)
# 非贪婪模式在整个表达式匹配成功的前提下尽可能少的匹配
re_obj re.match(div.*?/div, my_str)
print(re_obj.group()) # 获取整个正则表达式匹配的内容# \d{2,5}? \d{2} ! \d{2,5}
my_str 221324324324242
re_obj re.match(\d{2,5}?, my_str)
print(re_obj.group())
re_obj re.match(\d{2,5}, my_str)
print(re_obj.group())
re_obj re.match(\d{2}, my_str)
print(re_obj.group())
re切割和替换
import re
# re.split(pattern, string, maxsplit, flags)
# 作用对字符串进行分割
# 过程先使用正则对字符串进行匹配正则匹配到的内容作为分割符对字符串进行分割
str1 hello-python_hive
res1 re.split([-_], str1)
print(res1) # [hello, python, hive]# re.sub(pattern, repl, string, count, flags)
# 作用对字符串中的内容进行替换
# 过程先使用正则对字符串进行匹配然后将匹配到的内容进行替换返回替换之后的新字符串
str2 hello-python_hive # hello:python:hive
res2 re.sub([-_], :, str2)
print(res2) # hello:python:hive