import re
"""
你好,根据你的问题,本人一点想法,如有错误请批评指教.
在课上老师举例re.findall(life(.*)python,"life is short,i use python")
输出结果[' is short,i use '],可见输出结果是匹配一对圆括号正则表达式的内容,
其他非匹配的内容省略.
(.*)对应[' is short,i use ']
再看你的代码,r1 = re.findall("q{3}", s)不用过多解释大家都知道.
针对r2 = re.findall("(q){3}", s)举例说明一下.
"""
# 输出结果:
# q{3} : ['qqq', 'qqq']
# (q){3} : ['q', 'q']
# 根据(.*)对应[' is short,i use '],所以(q)对应'q'至于为什么是两个'q',看下面举例
s1 = "qqqqqq"
r1_1 = re.findall("q{3}", s1)
r1_2 = re.findall(r"(q){3}", s1)
print(r"q{3} : ", r1_1)
print(r"(q){3} : ", r1_2)
# 输出结果:AA
# q{3} : []
# (q){3} : []
s2 = "qrrquyquyqwwqssq"
r2_1 = re.findall("q{3}", s2)
r2_2 = re.findall("(q){3}", s2)
print(r"q{3} : ", r2_1)
print(r"(q){3} : ", r2_2)
# 输出结果:BB
# q{3} : ['qqq']
# (q){3} : ['q']
s3 = "qrrquyquyqqq"
r3_1 = re.findall("q{3}", s3)
r3_2 = re.findall("(q){3}", s3)
print(r"q{3} : ", r3_1)
print(r"(q){3} : ", r3_2)
"""
综上输出结果:AA和BB得出个人结论
当python系遇见正则表达式(q){3},首先python系统会先匹配正则表达式"q{3}",
在字符串中是否有匹配"qqq"的内容,如果有再匹配一对圆括号正则表达式(q),
最后将其结果输出.反之字符串没有匹配"qqq"的内容,(q)的匹配也就不存在,返回空列表
希望对你有帮助
"""