在《Python妙用re.sub分析正则表达式匹配过程》中老猿分析了findall函数的返回情况,老猿前一阵子在执行这个语句时:

>>> re.findall("[A-Za-z]([A-Za-z0-9])*[.]txt",'Abc2019.txt')
['9']
>>>

没有弄明白为什么是这个结果,我们使用《Python妙用re.sub分析正则表达式匹配过程》介绍的方法parsematch来分析一下:

>>> parsematch("[A-Za-z]([A-Za-z0-9])*[.]txt",'Abc2019.txt')
第1次匹配,匹配情况:
匹配子串group(0): Abc2019.txt,位置为:(0, 11)
匹配子串group(1): 9,位置为:(6, 7)
>>>

结合《Python正则表达式re.findall一个有趣的现象》我们知道这个返回确实是符合《Python正则表达式re.findall一个有趣的现象》的分析的。

但为什么group(1)是“9”呢?这是因为重复匹配的描述符“*”是对组“([A-Za-z0-9])”的限定,由于“*”是贪婪的,因此组匹配到一个字符后会继续往下匹配,直到遇到小数点之前才终止,因此group(1)最终的匹配结果是‘9’。

贪婪模式和非贪婪模式的匹配处理过程请参考《Python正则表达式\W+和\W*匹配过程的深入分析》的相关分析。

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


请大家多多支持,点赞、评论和加关注!谢谢!

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(58)-DAL层重构
  2. CozyRSS1.0 - 有可用性版本
  3. 三种经典iPhone上网络抓包方法详解
  4. js方法类库封装的简易示例
  5. UGUI之布局的使用
  6. BestCoder13 1001.Beautiful Palindrome Number(hdu 5062) 解题报告
  7. JAVA 多态的一种实现
  8. 【转】Android.mk文件语法规范(Android.mk File)
  9. Python3 字符编码
  10. 解决Eclipse中编辑xml文件的智能提示问题,最简单的是第二种方法。
  11. tp其他功能
  12. jwt vs session 以rails 为例 (翻译部分)
  13. Mongodb for .Net Core 驱动的应用
  14. 王之泰201771010131《面向对象程序设计(java)》第四周学习总结
  15. Python自动化运维开发实战 三、python文件类型
  16. Java学习笔记:注解Annotation
  17. 【配置】Spring Struts配置信息
  18. 【Unity】第9章 粒子系统
  19. centos中安装、升级git
  20. 20155216 2016-2017-2 《Java程序设计》第三周学习总结

热门文章

  1. OJ-2:区间问题【九度1554】
  2. thinkphp之无限分类
  3. 鸿蒙开发板外设控制 之 实现物理按键的“长按事件”(按键通用框架 V0.0.2)
  4. 探索RocketMQ的重复消费和乱序问题
  5. Docker - 解决 gitlab 容器上的项目进行 clone 时,IP 地址显示一串数字而不是正常 IP 地址的问题
  6. svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方案
  7. php随机填充字符串内容
  8. mybatis 字符串比较 == 用法
  9. List/Set 泛型转换
  10. VMware虚拟机 - 解决主机每次重启后 VMWare 都无法上网的问题