关于正则表达式中组的疑问
来源:10-9 组
充电两分钟
2018-02-12
import re
a = 'PythonPythonPythonPython'
r = re.findall('(Python){2}', a)
print(r)
此时能打印出两个Python,但是把2修改为3或者4是只打印一个Python,这是为什么呢?
我用的是Pycharm Python3
写回答
2回答
-
{2}代表 找两个PYthon,你有4个,当然会匹配两个。改成3,就是3个一组,你只有4个,所以只匹配一个。
012018-02-13 -
慕运维2948618
2018-02-12
如果有组存在(即括号括起来的字符),那么findall返回的是组的结果。
(Python){2}相当于(Python)Python,(Python){3}相当于(Python)PythonPython,所以(Python){2}返回两个Python,而(Python){3}返回一个Python。
你可以试试看((Python){3}),这里用了两个括号,代表有两个组,括号从外往里看,从左往右看,外面那个是第一组,里面那个是第二组。所以((Python){3})会返回[ ('PythonPythonPython', 'Python') ]
042018-02-17
相似问题