湖北省住房建设部官方网站,wordpress快速下载地址,网站个人主页模板,唐山网站建设汉狮怎么样前言
嗨喽#xff0c;大家好呀~这里是爱看美女的茜茜呐 一、正则表达式的特殊字符介绍
正则表达式 #x1f447; #x1f447; #x1f447; 更多精彩机密、教程#xff0c;尽在下方#xff0c;赶紧点击了解吧~
素材、视频教程、完整代码、插件安装教程我都准备好了大家好呀~这里是爱看美女的茜茜呐 一、正则表达式的特殊字符介绍
正则表达式 更多精彩机密、教程尽在下方赶紧点击了解吧~
素材、视频教程、完整代码、插件安装教程我都准备好了直接在文末名片自取就可 二、re模块的方法介绍
1、匹配类方法
findall方法
findall方法该方法在字符串中查找模式匹配将所有的匹配字符串以列表的形式返回
如果文本中没有任何字符串匹配模式则返回一个空的列表如果有一个子字符串匹配模式则返回包含一个元素的列表
所以无论怎么匹配我们都可以直接遍历findall返回的结果而不会出错这对工程师编写程序来说减少了异常情况的处理代码逻辑更加简洁
# re.findall() 用来输出所有符合模式匹配的子串re_str hello this is python 2.7.13 and python 3.4.5pattern python [0-9]\.[0-9]\.[0-9]
res re.findall(patternpattern,stringre_str)
print(res)# [python 2.7.1, python 3.4.5]pattern python [0-9]\.[0-9]\.[0-9]{2,}
res re.findall(patternpattern,stringre_str)
print(res)# [python 2.7.13]pattern python[0-9]\.[0-9]\.[0-9]{2,}
res re.findall(patternpattern,stringre_str)
print(res)# []# re.findall() 方法返回一个列表如果匹配到的话列表中的元素为匹配到的子字符串如果没有匹配到则返回一个空的列表re_str hello this is python 2.7.13 and Python 3.4.5pattern python [0-9]\.[0-9]\.[0-9]
res re.findall(patternpattern,stringre_str,flagsre.IGNORECASE)
print(res)# [python 2.7.1, Python 3.4.5]# 设置标志flagsre.IGNORECASE意思为忽略大小写编译的方式使用正则表达式
我们一般采用编译的方式使用python的正则模块如果在大量的数据量中编译的方式使用正则性能会提高很多具体读者们可以可以实际测试 学习中遇到问题没人解答小编创建了一个Python学习交流QQ群261823976
寻找有志同道合的小伙伴互帮互助,群里还有不错的视频学习教程和PDF电子书re_str hello this is python 2.7.13 and Python 3.4.5
re_obj re.compile(pattern python [0-9]\.[0-9]\.[0-9],flagsre.IGNORECASE)
res re_obj.findall(re_str)
print(res)match方法
match方法类似于字符串中的startwith方法
只是match应用在正则表达式中更加强大更富有表现力
match函数用以匹配字符串的开始部分
如果模式匹配成功返回一个SRE_Match类型的对象
如果模式匹配失败则返回一个None
因此对于普通的前缀匹配他的用法几乎和startwith一模一样
例如我们要判断data字符串是否以what和是否以数字开头
s_true what is a boy
s_false What is a boy
re_obj re.compile(what)print(re_obj.match(strings_true))
# _sre.SRE_Match object; span(0, 4), matchwhatprint(re_obj.match(strings_false))
# Nones_true 123what is a boy
s_false what is a boyre_obj re.compile(\d)print(re_obj.match(s_true))
# _sre.SRE_Match object; span(0, 3), match123print(re_obj.match(s_true).start())
# 0
print(re_obj.match(s_true).end())
# 3
print(re_obj.match(s_true).string)
# 123what is a boy
print(re_obj.match(s_true).group())
# 123print(re_obj.match(s_false))
# Nonesearch方法
search方法模式匹配成功后也会返回一个SRE_Match对象
search方法和match的方法区别在于match只能从头开始匹配而search可以从字符串的任意位置开始匹配
他们的共同点是
如果匹配成功返回一个SRE_Match对象
如果匹配失败返回一个None
这里还要注意search仅仅查找第一次匹配也就是说一个字符串中包含多个模式的匹配也只会返回第一个匹配的结果
如果要返回所有的结果最简单的方法就是findall方法也可以使用finditer方法
finditer方法
finditer返回一个迭代器遍历迭代器可以得到一个SRE_Match对象比如下面的例子 学习中遇到问题没人解答小编创建了一个Python学习交流QQ群261823976
寻找有志同道合的小伙伴互帮互助,群里还有不错的视频学习教程和PDF电子书re_str what is a different between python 2.7.14 and python 3.5.4re_obj re.compile(\d{1,}\.\d{1,}\.\d{1,})for i in re_obj.finditer(re_str):print(i)# _sre.SRE_Match object; span(35, 41), match2.7.14
# _sre.SRE_Match object; span(53, 58), match3.5.42、修改类方法介绍
sub方法
re模块sub方法类似于字符串中的replace方法只是sub方法支持使用正则表达式
所以re模块的sub方法使用场景更加广泛
re_str what is a different between python 2.7.14 and python 3.5.4re_obj re.compile(\d{1,}\.\d{1,}\.\d{1,})print(re_obj.sub(a.b.c,re_str,count1))
# what is a different between python a.b.c and python 3.5.4print(re_obj.sub(a.b.c,re_str,count2))
# what is a different between python a.b.c and python a.b.cprint(re_obj.sub(a.b.c,re_str))
# what is a different between python a.b.c and python a.b.csplit方法
re模块的split方法和python字符串中的split方法功能是一样的
都是将一个字符串拆分成子字符串的列表区别在于re模块的split方法能够使用正则表达式
比如下面的例子使用. 空格 : !分割字符串返回的是一个列表 学习中遇到问题没人解答小编创建了一个Python学习交流QQ群261823976
寻找有志同道合的小伙伴互帮互助,群里还有不错的视频学习教程和PDF电子书re_str what is a different between python 2.7.14 and python 3.5.4 USA:NewYork!Zidan.FRAre_obj re.compile([. :!])print(re_obj.split(re_str))
# [what, is, a, different, between, python, 2, 7, 14, and, python, 3, 5, 4, USA, NewYork, Zidan, FRA]大小写不敏感设置 re.compile(flagsre.IGNORECASE)非贪婪匹配
非贪婪匹配贪婪匹配总是匹配到最长的那个字符串
相应的非贪婪匹配是匹配到最小的那个字符串只需要在匹配字符串的时候加一个即可
下面的例子注意两个.
s Beautiful is better than ugly.Explicit is better than impliciy.re_obj re.compile(Beautiful.*y\.)print(re_obj.findall(s))
# [Beautiful is better than ugly.Explicit is better than implicit.]re_obj re.compile(Beautiful.*?\.)print(re_obj.findall(s))
# [Beautiful is better than ugly.]在正则匹配字符串中加一个小括号会有什么的效果呢
如果是要配置一个真正的小括号那么就需要转义符
下面的例子大家仔细看下注意下search方法返回的对象的group1这个方法是报错的 学习中遇到问题没人解答小编创建了一个Python学习交流QQ群261823976
寻找有志同道合的小伙伴互帮互助,群里还有不错的视频学习教程和PDF电子书import re
s aa1239d 0a ()--# obj re.compile(\(\))
# search
# rep obj.search(s)
# print(rep)
# _sre.SRE_Match object; span(15, 17), match()
# print(rep.group(1))
# IndexError: no such group
# print(rep.group())
# () findall
rep obj.findall(s)
print(rep)
# [()]如果是要返回括号中匹配的字符串中则该小括号不需要转义符
findall方法返回的是小伙好中匹配到的字符串
search.group方法的返回的整个模式匹配到字符串
search.group(1)这个是匹配第一个小括号中的模式匹配到的字符串
search.group(2)这个是匹配第二个小括号中的模式匹配到的字符串
以此类推
s aa1239d 0a ()--
rep re.compile(\w())print(rep.findall(s))
# []
print(rep.search(s).group())
# aa1239d
print(rep.search(s).group(1))
# 尾语
感谢你观看我的文章呐~本次航班到这里就结束啦
希望本篇文章有对你带来帮助 有学习到一点知识~
躲起来的星星也在努力发光你也要努力加油让我们一起努力叭。 最后宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀