关于Python正则表达式 findall函数问题详解
作者:wdc 时间:2022-10-24 22:18:43
在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候。下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑。
代码如下:
import re
str="a b c d"
regex0=re.compile("((\w+)\s+\w+)")
print(regex0.findall(str))
regex1=re.compile("(\w+)\s+\w+")
print(regex1.findall(str))
regex2=re.compile("\w+\s+\w+")
print(regex2.findall(str))
结果:
[('a b', 'a'), ('c d', 'c')]
['a', 'c']
['a b', 'c d']
可能结果有点意外,下面解释一下
第一个正则表达式中是带有2个括号的,我们可以看到其输出是一个list 中包含2个 tuple
第二个正则表达式中带有1个括号,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果。
第三个正则表达式中不带有括号,其输出的内容就是整个表达式所匹配到的内容。
结论:findall()返回的是括号所匹配到的结果(如regex1),多个括号就会返回多个括号分别匹配到的结果(如regex),如果没有括号就返回就返回整条语句所匹配到的结果(如regex2)。所以在提取数据的时候就需要注意这个坑。
实际上是由其并不是python特有的,这是 正则 所特有的 , 任何一门高级语言使用正则都满足这个特点:有括号时只能匹配到括号中的内容,没有括号【相当于在最外层增加了一个括号】。在正则里面 “()” 代表的是分组的意思,一个括号代表一个分组,你只能匹配到"()"中的内容
标签:python,正则,findall
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
js操作浏览器的参数方法
2024-04-18 10:00:04
Python学习之名字,作用域,名字空间(下)
2021-04-28 05:45:20
Pytorch 抽取vgg各层并进行定制化处理的方法
2023-01-28 16:30:15
Jupyter Notebook读入csv文件时出错的解决方案
2021-09-15 18:13:48
![](https://img.aspxhome.com/file/2023/1/133641_0s.jpg)
如何对MySQL数据库日志文件进行维护
2009-02-04 13:23:00
通过Python把学姐照片做成拼图游戏
2022-03-24 17:21:01
![](https://img.aspxhome.com/file/2023/3/101573_0s.png)
MySQL之复杂查询的实现
2024-01-23 00:32:43
![](https://img.aspxhome.com/file/2023/8/122928_0s.jpg)
详情解析TCP与UDP传输协议
2024-01-02 05:28:57
![](https://img.aspxhome.com/file/2023/3/109513_0s.png)
SQL Server中使用DTS设计器进行数据转移
2009-01-08 16:15:00
python TKinter弹出式菜单的实例方法
2023-03-25 05:59:54
Python库skimage绘制二值图像代码实例
2023-06-12 15:05:33
![](https://img.aspxhome.com/file/2023/2/59122_0s.png)
SQL Server 2005 还原数据库错误解决方法
2024-01-14 05:45:43
![](https://img.aspxhome.com/file/2023/2/125682_0s.jpg)
Webpack 实现 Node.js 代码热替换
2024-05-13 10:04:14
python并发编程多进程 互斥锁原理解析
2023-04-07 04:06:34
Python列表和集合的效率大比拼
2021-09-04 14:10:16
微信小程序实现人脸识别对比
2024-04-29 13:22:13
![](https://img.aspxhome.com/file/2023/7/132677_0s.gif)
Explain命令在优化查询中的实际应用
2024-01-20 03:54:13
python3 os进行嵌套操作的实例讲解
2022-11-01 09:49:35
![](https://img.aspxhome.com/file/2023/6/90816_0s.png)
vue3中7种路由守卫的使用大全举例
2024-05-29 22:43:52
python用moviepy对视频进行简单的处理
2023-08-03 07:02:15
![](https://img.aspxhome.com/file/2023/8/60518_0s.png)