在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候。下面看下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函数_Python正则表达式 findall函数详解相关推荐

  1. dictionary在python中什么意思_Python 字典(Dictionary)操作详解

    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = { ...

  2. 站长在线Python精讲:在Python中匹配字符串的3个方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中匹配字符串的3个方法详解>.本知识点主要内容有:使用match()方法进行匹配.使用search()方法进行 ...

  3. python中的class怎么用_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  4. python中class变量_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  5. Python中的list/tuple/dict/set数据类型详解

    Python中的list/tuple/dict/set数据类型详解 Python内部内置了一些数据类型与结构,可以方便在编程时候的使用. list List存储一系列的有序集合,并且元素内容可变(可更 ...

  6. 站长在线Python精讲:在Python中格式化字符串的两种方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...

  7. python中if语句的实例_对python中if语句的真假判断实例详解

    说明 在python中,if作为条件语句,当if后面的条件参数为真时,则执行后面的语句块,反之跳过,为了深入理解if语句,我们需要知道if语句的真假判断方式. 示例 在python交互器中,经过测试发 ...

  8. Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略

    Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介.案例应用(python中的编码格式及常见编码问题详解)之详细攻略 目录 符串编码(ASCII编码/GB ...

  9. split在python中什么意思_python 正则表达式 split(python里split什么意思)

    split rom gui我想用正则表达式实现.谢谢. 问题说split(new char[] {'/t'}明: 例如:s = "01-1" 或 s = "01-01" 想截取"01-&qu ...

  10. python random函数_Python随机函数random使用详解

    在python中用于生成随机数的模块是random,在使用前需要import, 下面看下它的用法. 1.random.random random.random()用于生成一个0到1的随机符点数: 0 ...

最新文章

  1. 详解PyTorch编译并调用自定义CUDA算子的三种方式
  2. 波士顿动力机器狗学会「撒尿」!拉风狗还不上街遛一遛?
  3. #pragma execution_character_set的意义
  4. 【前端学习日记】用reveal.js实现制作网页幻灯片
  5. 显示长日期格式的系统时间
  6. boost的chrono模块最小时间点的测试程序
  7. 浅谈 Kubernetes 服务发现
  8. 今天终于可以正常下班了
  9. php把服务器文件curl提交,php中使用curl进行文件上传的巨坑
  10. nvidia 桌面录屏
  11. Bzoj4199:[NOI2015]品酒大会
  12. 象棋 计算机配置,中国象棋电脑应用规范(五)
  13. Redis Lpush 命令
  14. R 语言 单位根检验
  15. 严重: The web application [] appears to have started a thread named [Thread-
  16. MindManager思维导图软件中如何下载使用行业分析模板教程分享
  17. 回归测试概念和4种回归测试策略——你想知道的都在这里啦!
  18. 能被3,4,5等数整除的数的特征
  19. Ubuntu16.04编译android6.0.1源码记录
  20. oracle—ebs_采购功能点操作手册,oracle—EBS_采購功能点操作手册.doc

热门文章

  1. Windows多用户同时登陆
  2. 中标普华的安装与root登录
  3. ArcEngine加载栅格数据
  4. 电磁轨道炮设计-基于模型的系统工程(20190819更新)
  5. android MP3播放器(支持歌词滚动等功能)
  6. [Javascript] 正则表达式匹配的常用方法总结
  7. windows延缓写入失败的处理
  8. 关于HTML滚动条问题
  9. 修饰符和static用法
  10. 微信小程序向原数组添加数组 前增加、后增加、删除、数组转字符串、字符串转数组