Python正则表达式re.findall("[A-Za-z]([A-Za-z0-9])*[.]txt",'Abc2019.txt')的结果为什么是['9']
在《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
请大家多多支持,点赞、评论和加关注!谢谢!
Python正则表达式re.findall("[A-Za-z]([A-Za-z0-9])*[.]txt",'Abc2019.txt')的结果为什么是['9']的更多相关文章
- Python正则表达式re.findall一个有趣的现象
下面通过几个案例来分析一下, 注意:本节的parsematch函数请参考<妙用re.sub分析正则表达式解析匹配过程> 案例一: >>> re.findall(r&quo ...
- python正则表达式(5)--findall、finditer方法
findall方法 相比其他方法,findall方法有些特殊.它的作用是查找字符串中所有能匹配的字符串,并以结果存于列表中,然后返回该列表 注意: match 和 search 是匹配一次 finda ...
- python 正则表达式 re.findall &re.finditer
语法: findall 搜索string,以列表形式返回全部能匹配的子串 re.findall(pattern, string[, flags]) finditer 搜索string,返回一个顺序访问 ...
- Python正则表达式之findall疑点
在findall中使用()进行分组时,得出的结果会优先提取分组的,比如下面这个例子 In [46]: re.findall(r"www.(baidu|163).com", &quo ...
- 正则表达式 re.findall 用法
正则 re.findall 的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组)语法: findall(pattern, string, flags=0) import ...
- 第11.4节 Python正则表达式搜索字符集匹配功能及元字符”[]”介绍
Python正则表达式字符集匹配表示是指搜索一个字符,该字符在给定的一个字符的集合中.元字符'['和']'是用于组合起来定义匹配字符集,匹配模式中使用 '['开头,并使用']'结尾来穷举搜索的字符可能 ...
- 第11.26节 Python正则表达式运算符优先级
正则表达式从左到右进行计算,并遵循优先级顺序,相关运算符的优先级顺序按下表从高到低排列. 例如:字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或 ...
- Python正则表达式re模块学习遇到的问题
Python正则表达式处理的组是什么? Python正则表达式处理中的匹配对象是什么? Python匹配对象的groups.groupdict和group之间的关系 Python正则表达式re.mat ...
- python正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、split,findall、compile、特殊字符转义
本文内容: 正则表达式常用字符. 常用可选标志位. group与groups. match. search. sub. split findall. compile 特殊字符转义 一些现实例子 首发时 ...
随机推荐
- php 检测敏感字
public function getMin($content){//调用接口 $content_url ="http://www.ju1.cn/index.php/Index/add.ht ...
- JS之DOM(一)
一.DOM简介 什么是DOM?简单地说,DOM是是针对HTML和XML文档的一个API,一套对文档的内容进行抽象和概念化的方法. 学习过ORM的同学可能知道ORM是将数据库中的表映射到类,建立一个表和 ...
- Markdown 常用语言关键字
Markdown 语法高亮支持的语言还是比较多的,记下来备用. 语言名 关键字 Bash bash CoffeeScript coffeescript C++ cpp C# cs CSS css Di ...
- kettle——作业
使用作业执行之前的转换,并且额外在表student2中添加一条数据 这里操作类似hue (1)新建一个作业,拉取组件 选择start 组件名字,类型可以下拉如图,根据需要选择即可 选择转换 并将sta ...
- IDM下载器的自定义设置
IDM(Internet Download Manager)下载器主窗口的左侧是下载类别的分类,提供了分类功能来组织和管理文件.如果不需要它,可以删除"分类"窗口,并且在下载文件时 ...
- CorelDRAW常用工具之渐变工具
我们在进行宣传单页或者LOGO等等各种平面设计时,颜色的使用是极为重要的一方面.有些新手可能还不知道怎么填充多种颜色的渐变,有的背景色不止2个颜色渐变,而是由多种颜色调成的. 我们在画布上画两个图形, ...
- ABBYY FineReader 15高级转换功能详解
ABBYY FineReader 15(Windows系统)OCR文字识别软件拥有强大的OCR项目功能,能帮助用户检查识别区域.验证识别出的文本.预处理图像以提高 OCR精确性等等.其强大的OCR微调 ...
- 怎么给Folx添加需要储存的网站密码
Folx内置密码管理功能,可以帮助用户储存特定网站的密码,实现更加快速的登陆下载操作.在Folx的免费版本中,用户最多可以存储2个密码:而Folx专业版则不限制用户存储密码的数量. Folx通过两种方 ...
- MathType中余弦函数的输入
余弦函数是三角函数中十分重要的一个知识点,余弦函数的俩种形式分别为a2=b2+c2-2bccosA和cosA=(b2+c2-a2)/2bc,接下来我们分别介绍一下这俩种形式的输入. 具体步骤如下: 步 ...
- FL studio系列教程(八):如何打开和新建FL Studio的文件
FL Studio编曲软件中制作和编辑的音乐将存储在FL Studio的项目文件中.我们随时都可以打开这些对项目文件进行二次编辑和修改等等.操作的方法同很多软件都相同,但也有其独特的地方.下面就跟小编 ...