正则表达式

来源: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,没出现就返回空。如果匹配到了,匹配结果只会返回小括号中的内容。

0
0

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

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

14447 学习 · 4438 问题

查看课程