关于python中RE用法的一些总结(python中re函数的使用方法)

网友投稿 447 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小时内删除侵权内容。

上一篇:PySide6开发环境配置(使用PyCharm)
下一篇:springboottest测试依赖和使用方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~