0
点赞
收藏
分享

微信扫一扫

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

小龟老师 2022-03-14 阅读 84
python


先来看一下下面的例子,使用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']

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


举报

相关推荐

0 条评论