门户网站项目开发案例,网站建设 套餐,科技创新的评价机制的作用,网上做造价网站找往期文章包括但不限于本期文章中不懂的知识点#xff1a; 个人主页#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏#xff1a; Python 目录
正则表达式的概念
正则表达式的组成
元字符
限定符
其他字符
正则表达式的使用
正则表达式的常见操作方法
match方法的…找往期文章包括但不限于本期文章中不懂的知识点 个人主页我要学编程(ಥ_ಥ)-CSDN博客 所属专栏 Python 目录
正则表达式的概念
正则表达式的组成
元字符
限定符
其他字符
正则表达式的使用
正则表达式的常见操作方法
match方法的使用
search方法的使用
findall方法的使用
sub方法的使用
split方法的使用
视频代码解读
章节选择题
章节实战 正则表达式的概念
在上一篇文章中我们学习了字符串这种数据类型基于字符串而广泛使用的就是正则表达式了。我们先来看它的概念。正则表达式Regular Expression简称regex或regexp是一种文本模式描述的工具它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在编程语言和文本编辑器中正则表达式被广泛用于搜索、替换符合某个模式的文本。简单理解就是给了我们一个模板然后根据这个模版来操作另外的字符串进行匹配、替换等操作。
正则表达式的组成
既然我们说正则表达式是提供了一个模版那这个模板是随便可以使用任意字符组成吗肯定是不行的其组成部分肯定也是有特殊的规定。组成模版的字符串除了正常使用的字符之外还有另外一些特殊的字符。
元字符
元字符是具有特殊意义的专用字符。简单理解就是 有一些字符在正则表达式中被赋予了一些特殊的作用并起名叫 元字符。下面我们来看常见的元字符。
元字符种类描述说明^表示匹配的开始$表示匹配的结束.匹配任意字符 (除\n)\w匹配字母、数字、下划线\W匹配非 字母、数字、下划线\s匹配任意空白字符\n、\t 等\S匹配任意非空白字符\d匹配任意十进制数也就是0~9
注意可能有小伙伴不是很理解 匹配 这个词这个词和 寻找 的意思差不多。匹配成功就是成功找到了匹配失败就是没有找到。对于匹配成功之后会发生什么后续在解释。
限定符
限定符 是用来限定匹配的次数也就是当一个字符反复出现时我们不想全部都匹配只想匹配其中的三个或者四个子类的。
限定符种类描述说明匹配前面的字符0次或1次匹配前面的字符1次或多次*匹配前面的字符0次或多次{n}匹配前面的字符n次{n, }匹配前面的字符最少n次{n, m}匹配前面的字符最小n次最多m次
注意限定符必须有前缀字符也就是表明其要限制的字符是谁。例如\w? 这个字符串如果作为模版的话就是在匹配一个字符串时即使该字符串由很多个 字母、数字、下划线 组成那最多也就能成功匹配一个。匹配的结果暂时不管
其他字符
其他字符描述说明区间字符[ ]匹配[ ]中所指定的字符排除字符^匹配不在[ ]内的指定字符选择字符|匹配 | 左右的任意字符转义字符与Python中的转义字符是一样的[\u4e00 - \u9fa5]匹配任意一个汉字日常生活中基本都涵盖分组()改变限定符的作用
详细解释
1、 区间字符[ ]匹配过程中当遇到 [ ] 内的字符时就会匹配成功。
2、排除字符^这其实就是 区间字符 的取反匹配过程中遇到 [ ] 内不存在的字符时就会匹配成功。区间字符与排除字符经常是一起出现的因为排除字符是基于区间字符的。但排除字符是存在于区间字符之内的。
3、选择字符|这个与Python中的 or 操作符类似只要满足其中一个条件即可。但不存在类似于短路的现象。
4、转义字符就是我们在刚开始学习Python时学习的转义字符。例如. 这个字符是元字符的一种但是加上 \ 之后这个 . 就是一个普通字符了。
5、[\u4e00-\u9fa5]在匹配字符的过程中如果遇到了 某些字符对应的Unicode码值 在 上述的范围之内就表明这个是 中文字符且匹配成功了。
6、分组()这个就类似于 圆括号 对于 操作符的作用可以实现运算的先后顺序这里是实现匹配的先后顺序。例如six l fourth只能匹配到 six 与 fourth但是如果加上()就会变得不一样( six | four ) th这里能匹配的就是 sixth 或者 fourth了。相当于是先运算括号内的在去运算括号外的(这里的就是括号里面的任选一个括号外边的全部起作用)与操作符是类似的。
正则表达式的使用
在Python中如果要使用正则表达式的话需要导入 re 模块。模块与包的概念是类似的都是为了实现对某些代码的复用这是面向对象的重要特征之一封装。可能有的小伙伴第一门编程语言就是接触的Python暂时还不了解这些概念没关系后面我们会接着学习的。我们只需要知道简单的将模块看成包就行了。
正则表达式的常见操作方法
当我们导入 re 模块之后就可以进行正则表达式的相关操作了但具体的操作还得使用该模块中的方法接下来详细来学习一下。
方法描述说明re.match(pattern,string,flags0)用于从字符串的开始位置进行匹配如果起始位置匹配成功结果为Match对象否则结果为None。re.search(pattern,string,flags0)用于在整个字符串中搜索第一个匹配的值如果匹配成功结果为Match对象否则结果为None。re.findall(pattern,string,flags0)用于在整个字符串搜索所有符合正则表达式的值结果是一个列表类型。re.sub (pattern,repl,string,count,flags0)用于实现对字符串中指定子串的替换re.split(pattern,string,maxsplit,flags0)字符串中的split()方法功能相同都是分隔字符串的
注意
1、上述方法的所有pattern、string参数均为字符串类型pattern 是模块字符串定义匹配规则的string 是待匹配的字符串需要匹配的字符串。flags0 是可选参数用于指定使用正则表达式时的匹配模式如忽略大小写、多行匹配等。如果不需要特殊匹配模式可以省略这个参数或者设置为0。我们一般都是直接忽略的。
2、match方法是用来匹配string的起始位置的一旦起始位置匹配失败的话即使后面存在可以匹配成功的子串也会忽略直接返回None。
3、re.sub() 方法中repl 是替换字符串或者一个函数 。如果 repl 是一个函数那么这个函数会被调用传入每个匹配对象返回值将用于替换匹配到的文本。count 是一个可选参数指定了模式匹配后替换的最大次数。如果设置为 0则所有匹配都会被替换。如果设置为一个正整数则只替换前 count 次匹配
4、re.split() 方法中maxsplit 这是一个可选参数指定了分割的最大次数。
下面就来演示上述方法的使用。
match方法的使用
import re# 这里的r是代表当前字符串中的转义字符是不能其作用的
# 例如普通字符串\d - 表示是十进制的数字
# r普通字符串r\d - 表示两个字符 \ 与 d
pattern rhello
string1 hello world
string2 123 hello world# match方法代表是从字符串的开始位置匹配
# string1的开始位置是包含hello的可以匹配成功因此match1返回一个Match对象
# string2的开始位置是不包含hello的匹配失败因此match2返回None
match1 re.match(pattern, string1)
match2 re.match(pattern, string2)print(match1)
print(match2)
运行结果 匹配成功会返回一个Match对象如果我们想要将 Match对象其中的某些部分给单独拿出来的话就可以使用下面的方法
print(match1.re) # 输出正则表达式
print(match1.string) # 输出待匹配的字符串
print(match1.group()) # 输出匹配成功的字符串
print(match1.span()) # 输出匹配成功的字符串的索引范围
运行结果 search方法的使用
import repattern rhello
string1 hello world
string2 123 hello world# search方法是在整个字符串中去匹配
# string1 与 string2 都是包含hello的因此都可以匹配成功
match1 re.search(pattern, string1)
match2 re.search(pattern, string2)print(match1)
print(match2)
运行结果 findall方法的使用
import repattern rhello
string1 hello world--hello python
string2 123 hello world--hello python# findall方法也是在整个字符串中去匹配但是它会匹配所有的结果并返回一个列表
# string1 与 string2 都是包含hello的因此都可以匹配成功
match1 re.findall(pattern, string1)
match2 re.findall(pattern, string2)print(match1)
print(match2)
运行结果 sub方法的使用
import repattern rhello
string1 hello world--hello python
string2 123 hello world--hello python# sub方法是替换字符串中的匹配项
# 将string1与string2中的pattern部分替换为I love
match1 re.sub(pattern, I love,string1)
match2 re.sub(pattern, I love,string2)print(match1)
print(match2)
运行结果 split方法的使用
import repattern r--
string1 hello world--hello python
string2 123 hello world--hello python
string3 123 hello world hello python# split方法是按照pattern分割字符串并返回一个列表
# string1 与 string2 都是包含--的因此都可以分割成功
match1 re.split(pattern, string1)
match2 re.split(pattern, string2)
# string3 没有--因此无法分割成功但是最终的结果还是一个列表
match3 re.split(pattern, string3)print(match1)
print(match2)
print(match3)
运行结果 上面代码都是对上述方法的一个简单使用具体还有一些细节这里也就不再演示大家可以自己去编写代码实践。
视频代码解读
下面是关于 Python子木 up主的视频中一些可能有困惑的地方解释。
章节选择题 章节实战
1、使用列表存储一些商品数据使用循环遍历输出商品信息要求对商品的编号进行格式化为6位单价保留2位小数并在前面添加人民币符号输出。
运行效果 思路直接将数据存储到列表中然后我们直接去遍历列表即可。但是这里的难点就是这么样格式化输出这些数据。
如果将 编号这些数据头也存储在列表中的话有两点不合适的地方1、列表是用来存储有效数据的如果存着编号这些数据有点别扭并且在后面处理的时候还要额外判断十分麻烦2、无法实现对齐输出。因此我们是先将数据头在最开始的地方输出。接着就是要将编号与单价按照要求格式化。最简单也是最暴力的方式将对应位置的数据全部拿出来直接进行修改。例如在编号数据前面加上四个零即可在单价前面加上 然后再对数据 .2f 的输出即可。
代码实现
goods [[01, 电风扇, 美的, 500],[02, 洗衣机, TCL, 1000],[03, 微波炉, 老板, 400]]
print(编号\t\t名称\t\t\t品牌\t\t单价)
# 遍历列表
for item in goods: # item是一个一维列表for j in item:print(j,end\t\t)print()
# 在上述基础上进行暴力的格式化操作即可
for item in goods: # item是一个一维列表# item[0] 是编号item[3]是单价item[0] 0000item[0]# 注意这里操作的单价要是int或float类型而不能是字符串item[3] {0:.2f}.format(item[3])print(编号\t\t\t名称\t\t\t品牌\t\t单价)
for item in goods: # item是一个一维列表for j in item:print(j,end\t\t)print()好啦本期 初始Python篇7—— 正则表达式 的学习之旅 就到此结束啦我们下一期再一起学习吧 文章转载自: http://www.morning.dpfr.cn.gov.cn.dpfr.cn http://www.morning.mbmtn.cn.gov.cn.mbmtn.cn http://www.morning.ylph.cn.gov.cn.ylph.cn http://www.morning.jsdntd.com.gov.cn.jsdntd.com http://www.morning.rhdln.cn.gov.cn.rhdln.cn http://www.morning.npfkw.cn.gov.cn.npfkw.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.ftmly.cn.gov.cn.ftmly.cn http://www.morning.gkgr.cn.gov.cn.gkgr.cn http://www.morning.rkxqh.cn.gov.cn.rkxqh.cn http://www.morning.hdlhh.cn.gov.cn.hdlhh.cn http://www.morning.rlxg.cn.gov.cn.rlxg.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.sxhdzyw.com.gov.cn.sxhdzyw.com http://www.morning.hrrmb.cn.gov.cn.hrrmb.cn http://www.morning.mlwhd.cn.gov.cn.mlwhd.cn http://www.morning.rgqnt.cn.gov.cn.rgqnt.cn http://www.morning.gediba.com.gov.cn.gediba.com http://www.morning.nzklw.cn.gov.cn.nzklw.cn http://www.morning.mjqms.cn.gov.cn.mjqms.cn http://www.morning.fykrm.cn.gov.cn.fykrm.cn http://www.morning.znlhc.cn.gov.cn.znlhc.cn http://www.morning.lmknf.cn.gov.cn.lmknf.cn http://www.morning.mzcrs.cn.gov.cn.mzcrs.cn http://www.morning.ljhnn.cn.gov.cn.ljhnn.cn http://www.morning.rbbgh.cn.gov.cn.rbbgh.cn http://www.morning.dwfxl.cn.gov.cn.dwfxl.cn http://www.morning.gthwr.cn.gov.cn.gthwr.cn http://www.morning.ckfqt.cn.gov.cn.ckfqt.cn http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn http://www.morning.tqqfj.cn.gov.cn.tqqfj.cn http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn http://www.morning.ccsdx.cn.gov.cn.ccsdx.cn http://www.morning.cwrpd.cn.gov.cn.cwrpd.cn http://www.morning.rgksz.cn.gov.cn.rgksz.cn http://www.morning.fwzjs.cn.gov.cn.fwzjs.cn http://www.morning.wnnfh.cn.gov.cn.wnnfh.cn http://www.morning.dpplr.cn.gov.cn.dpplr.cn http://www.morning.xcszl.cn.gov.cn.xcszl.cn http://www.morning.wmfh.cn.gov.cn.wmfh.cn http://www.morning.whclz.cn.gov.cn.whclz.cn http://www.morning.rqfkh.cn.gov.cn.rqfkh.cn http://www.morning.ryfqj.cn.gov.cn.ryfqj.cn http://www.morning.rjmg.cn.gov.cn.rjmg.cn http://www.morning.mtmnk.cn.gov.cn.mtmnk.cn http://www.morning.zthln.cn.gov.cn.zthln.cn http://www.morning.jcwhk.cn.gov.cn.jcwhk.cn http://www.morning.gjlxn.cn.gov.cn.gjlxn.cn http://www.morning.pggkr.cn.gov.cn.pggkr.cn http://www.morning.kflpf.cn.gov.cn.kflpf.cn http://www.morning.rqckh.cn.gov.cn.rqckh.cn http://www.morning.tbcfj.cn.gov.cn.tbcfj.cn http://www.morning.qgtfl.cn.gov.cn.qgtfl.cn http://www.morning.rshs.cn.gov.cn.rshs.cn http://www.morning.btblm.cn.gov.cn.btblm.cn http://www.morning.lwtfr.cn.gov.cn.lwtfr.cn http://www.morning.rxcqt.cn.gov.cn.rxcqt.cn http://www.morning.gagapp.cn.gov.cn.gagapp.cn http://www.morning.plchy.cn.gov.cn.plchy.cn http://www.morning.tckxl.cn.gov.cn.tckxl.cn http://www.morning.zpyh.cn.gov.cn.zpyh.cn http://www.morning.rfkyb.cn.gov.cn.rfkyb.cn http://www.morning.jpnfm.cn.gov.cn.jpnfm.cn http://www.morning.c7496.cn.gov.cn.c7496.cn http://www.morning.ydxx123.cn.gov.cn.ydxx123.cn http://www.morning.mldrd.cn.gov.cn.mldrd.cn http://www.morning.xnhnl.cn.gov.cn.xnhnl.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.hctgn.cn.gov.cn.hctgn.cn http://www.morning.ktmpw.cn.gov.cn.ktmpw.cn http://www.morning.kxmyj.cn.gov.cn.kxmyj.cn http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn http://www.morning.tgcw.cn.gov.cn.tgcw.cn http://www.morning.hrydl.cn.gov.cn.hrydl.cn http://www.morning.lkkkf.cn.gov.cn.lkkkf.cn http://www.morning.zlnmm.cn.gov.cn.zlnmm.cn http://www.morning.jghqc.cn.gov.cn.jghqc.cn http://www.morning.kdjtt.cn.gov.cn.kdjtt.cn http://www.morning.swsrb.cn.gov.cn.swsrb.cn http://www.morning.nlywq.cn.gov.cn.nlywq.cn