分组在re模块中的使用以及使用正则表达式的技巧
2024-08-31 20:42:46
1.split:切割
使用split不会返回被切割的字符
import re
ret = re.split("\d+","5as46asf46asf46a")
print(ret)
结果为:['', 'as', 'asf', 'asf', 'a']
要想返回被切割的数字,需要在正则表达式前后加( )
import re
ret1 = re.split("(\d+)","5as46asf46asf46a")
print(ret1)
结果为:['', '5', 'as', '46', 'asf', '46', 'asf', '46', 'a']
2.分组命名:(?P<这个组的名字>正则表达式)
import re
s = "<a>wahaha</a>"
ret = re.search("<\w+>(?P<abc>\w+)</\w+>",s)
print(ret.group())#结果为<a>wahaha</a>
print(ret.group("abc"))#结果为wahaha
3.使用findall可以取到分组中的内容,在表达式中加( )可以优先显示分组中的内容
import re
s = "<a>wahaha</a>"
ret = re.findall("<\w+>(\w+)</\w+>",s)
print(ret)#结果为["wahaha"]
如果要取消分组优先,使用(?:正则表达式)
import re
s = "<a>wahaha</a>"
ret = re.findall("<\w+>(\w+)</\w+>",s)
ret1 = re.findall("<\w+>(?:\w+)</\w+>",s)
print(ret)#结果为["wahaha"]
print(ret1)#结果为["<a>wahaha</a>"]
在网页html中,如果使用分组,要求使用这个名字的分组和前面的同名分组中的内容匹配的必须一致
前一个标签可以用?P<tab>,后一个标签可以用?P=tab
import re
1 pattern = "<(?P<tab>\w+)>(\w+)</(?P=tab)>"
ret = re.search(pattern,s)
print(ret.group())#结果为:<a>wahaha</a>
4.
import re
ret1 = re.findall(r"\d+\.\d+|\d+","1-2*(60+(-40.35/5)-(-4*3))")
print(ret1)结果为:['1', '2', '60', '40.35', '5', '4', '3']
如果要过滤掉小数:
import re
ret2 = re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")
print(ret2)结果为:['1', '2', '60', '', '5', '4', '3']
最新文章
- hadoop 运维
- BZOJ3615 : MSS
- virtualBox虚拟机安装与主机互访和实现上网配置
- linux下date命令实现时间戳与日期的转换
- C# 邮件发送注意事项
- 男性在下一100层【第三层】——高仿手机银行client接口
- VC6 鼠标钩子 最简单样例
- 巧妙利用ToArray()函数移除集合中的元素
- View学习(一)-DecorView,measureSpec与LayoutParams
- web前端-----第二弹CSS
- sql对每一条记录都给他一个随机的数。
- CodeForces-748B
- win10更新后出现System.ComponentModel.Win32Exception
- Direct Shot Correspondence Matching
- C# 线程手册 第三章 使用线程 实现一个数据库连接池(实战篇)
- 深入理解类成员函数的调用规则(理解成员函数的内存为什么不会反映在sizeof运算符上、类的静态绑定与动态绑定、虚函数表)
- js异常处理
- CentOS修改locale解决调用API乱码问题
- 转 Kubernetes 入门 概念理解
- 深入浅出JavaScript运行机制
热门文章
- qt实现-给SQLITE添加自定义函数(对某个字段进行加密)
- QThread多线程编程经典案例分析(三种方法,解释了为什么使用moveToThread的根本原因,即为了避免调用QThread::exec() )
- CentOS7 Vim自动补全插件----YouCompleteMe安装与配置
- is和==的区别以及编码和解码
- java.lang.ClassNotFoundException: org.jaxen.JaxenException 解决方法
- Hystrix断路器配置属性解析
- 在centos7上安装Docker CE
- 高并发 Nginx+Lua OpenResty系列(6)——Lua开发库Mysql
- Protobuf 小试牛刀
- ZooKeeper 系列(三)—— Zookeeper常用 Shell 命令