springboot 实现接口灰度发布的实例详解
492
2022-08-22
关于python中RE用法的一些总结(python中re函数的使用方法)
想当初,刚学会python时,写的第一个脚本就用了大量的正则,那时是边写边百度。回头看来发现re在日常中用的挺多的,自己简单做个笔记,方便后续查找。
1、匹配用法
. 匹配任何字符
? 匹配前面的表达式0次或1次
* 匹配前面的表达式0次或多次
+ 匹配前面的表达式1次或多次
{N} 匹配重复前面的表达式N次,如[0-9]{3}表示任意000-999中的任意一个3位数
一个特殊的用法:最小匹配 .+?
( ) 匹配括号中的表达式,并保存为子组
举例:r'\d{2}\.\d{2}\.\d{2}\.\d{2}:(8080|3306)'
会匹配到10.50.33.45:8080和10.30.33.45:3306,
\d 数字[0-9] 反义\D
\w 所有字符和数字[a-zA-Z0-9] 反义\W
\s 匹配任何空白符[\n\t\r\v\f]
\b 表示边界 反义\B
2、关于匹配指定字段的使用
比如说字符串是aaa &d1nD$FA76 aaa,我想匹配到aaa中间的这一段字符,尝试了re.search()和re.findall(),发现findall()可以使用,两个代码示例如下
import repasswd = 'aaa &d1nD$FA76 aaa'namemode = 'aaa\s+' + '(.+?)' + '\s+aaa'm = re.search(namemode, passwd)if m is not None: print(m.group())-----------------------输出结果,整行都输出了,但是我其实只想要&d1nD$FA76aaa &d1nD$FA76 aaa////////////////换一种思路继续来/////////////////////////import repasswd = 'aaa &d1nD$FA76 aaa'namemode = 'aaa\s+' + '(.+?)' + '\s+aaa'm = re.findall(namemode, passwd)print(m)-----------------------这里面输出了一个序列类型的结果,如果改成print(m[0])可以直接得到&d1nD$FA76,缺点是必须确保匹配条件的精确性,否则会输出一堆匹配结果的列表['&d1nD$FA76']
3、re.sub()的局限性
之前有一次用sub来替换某一段字符时一直不生效,一度以为是不是自己哪里写错了,后来实践了后发现,如果被替换的字符中含有‘$’的话re.sub()是没法生效的,这种情况下可以借助于replace的用法来实现,继续拿上面的举例
import renames = 'aaa &d1nD$FA76'namemode = 'aaa\s+' + '(.+)'newpass = '12345678'oldpass = re.findall(namemode, names)[0]result = re.sub(oldpass,newpass,names)print(result)------------------------输出结果 这里发现还是输出了原来的字符,没有将&d1nD$FA76替换为12345678aaa &d1nD$FA76//////////////////接下来换一种方法/////////////////////import renames = 'aaa &d1nD$FA76'namemode = 'aaa\s+' + '(.+)'newpass = '12345678'oldpass = re.findall(namemode, names)[0]result = names.replace(oldpass,newpass)print(result)-------------------------------------输出结果 发现结果替换成功了aaa 12345678
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~