正则中re高级用法findall中的一个小坑

简介: 正则中re高级用法findall中的一个小坑

先来看一下下面的例子,使用ipython实验:


正常使用结果:

In [4]: re.findall(r'ab','123ab156465ab1111')
Out[4]: ['ab', 'ab']


下面是用户自己添加一个分组,和添加两个分组的例子:

In [5]: re.findall(r'a(b)','123ab156465ab1111')
Out[5]: ['b', 'b']
In [8]: re.findall(r'a(b)(c)','123abc156465abc1111')
Out[8]: [('b', 'c'), ('b', 'c')]


看到了吧,其实在findall中如果用户添加分组的时候,其实默认显示的是用户分组的结果。为了想要显示匹配所有的内容,需要取消显示用户分组


解决方式,要加上问号来启用“不捕捉模式”

In [7]: re.findall(r'a(?:b)','123ab156465ab1111')
Out[7]: ['ab', 'ab']


下次在使用的时候注意一下吧......

相关文章
|
6月前
|
Python
正则表达式高级用法
正则表达式是强大的文本匹配工具,常用于搜索、匹配和验证字符串。高级用法包括:捕获组(区分需要提取的内容)、非捕获组(减少开销)、零宽断言(定位匹配位置)、反向引用(匹配相同内容)、嵌入代码(实现复杂逻辑)、贪婪与非贪婪匹配(控制匹配范围)和递归匹配(处理嵌套结构)。了解这些高级技巧能提升字符串操作效率。示例展示了验证Email、电话号码、提取URL和清理多余空格的正则表达式应用。
编程小白的自学笔记四(正则表达式模块search函数)
编程小白的自学笔记四(正则表达式模块search函数)
常用的正则表达式(方便自己看)
常用的正则表达式(方便自己看)
35 0
|
Java 程序员 C语言
由浅入深C系列六:C中实现字符串trim的功能
由浅入深C系列六:C中实现字符串trim的功能
|
前端开发
前端学习案例8-正则-括号的用法
前端学习案例8-正则-括号的用法
79 0
前端学习案例8-正则-括号的用法
|
前端开发
前端学习案例7-正则-括号的用法
前端学习案例7-正则-括号的用法
80 0
前端学习案例7-正则-括号的用法
|
前端开发
前端学习案例4-正则概述-字符组的简写
前端学习案例4-正则概述-字符组的简写
56 0
前端学习案例4-正则概述-字符组的简写
LeetcodeSQL入门——知识点总结(选择/排序/修改/字符串处理/正则)
LeetcodeSQL入门——知识点总结(选择/排序/修改/字符串处理/正则)
|
Python
Python正则表达式匹配电话号码和邮箱实例演示,正则表达式的基本用法
Python正则表达式匹配电话号码和邮箱实例演示,正则表达式的基本用法
252 0