关于组还是不太理解 求教

来源:10-9 组

Angle_飘

2018-07-11

为什么('q{3}',s)和("(q){3}",s)打印结果不一样

组到底该怎么理解 请教老师

http://img.mukewang.com/szimg/5b4625800001602705460681.jpg

写回答

1回答

JaydenJune

2018-07-17

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)的匹配也就不存在,返回空列表
    希望对你有帮助
"""


1
0

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14446 学习 · 4438 问题

查看课程