正则表达式
来源:10-9 组
Homo_sapiensQ
2017-12-10
# import re a='PythonPythonPythonPython' r=re.findall('(Python)?',a) print(r)
?匹配0次或者1次,按理说只应该输出['Python'],为何会输出['Python', 'Python', 'Python', 'Python', '']
还有,若执行
r=re.findall('(Python){3,6}',a)
为何输出['Python'],不应该匹配'Python' 3到6次吗,四个不应该都打出来?
写回答
1回答
-
萌呐你傻
2017-12-16
我的理解是这样的:
第一个你的正则表达式匹配的是,在这个字符串中出现了0次或1次‘Python’的所有字符,搜索到第一个单词的n时就发现匹配到了,所以返回Python,后面也是一样,只要匹配到了就会返回。匹配0次或者1次并不是说匹配到一个就停止匹配了。
第二个的作用应该是判断字符串中是否出现了3到6次的Python,只要出现了就返回Python,没出现就返回空。如果匹配到了,匹配结果只会返回小括号中的内容。
00
相似问题