python findall的一个问题

zhiyinchu2248 2017-08-10 03:27:33
>>> a =re.compile('.*')
>>> a.findall('I love you!')
['I love you!', '']
>>> a.findall('I love you!\n')
['I love you!', '', '']


求助,我觉得第一个输出应该为[‘I love you!],为什么列表里多了一个空字符串,我不能理解,
还有第二个输出,.*能够匹配所有的字符串除了换行符,那这里的如何解释呢?
还请大家指教,感谢~
...全文
213 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
欢乐的小猪 2017-08-11
  • 打赏
  • 举报
回复
*代表匹配任意个,0个也会匹配。你可以改正则表达式为 a =re.compile('.{1,}') 再试试
chuifengde 2017-08-11
  • 打赏
  • 举报
回复
这种情况只要记住一个结果就行,就是在行末结束位置还要匹配一次,改成.+就不会匹配到后面的空了
zhiyinchu2248 2017-08-11
  • 打赏
  • 举报
回复
感谢! 但是我不明白的是 .* 可以匹配所有的字符串,除了换行符,为何运行findall()后列表里有两个结果呢?这说明findall()匹配了一次‘i love you!’之后遇到了不匹配的字符,所以才有了结果列表中的第二个‘ ’,那不匹配的字符只能是换行符,可是python中字符串并不是以换行符结束的呀? 非常期待你的回答,感谢~

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧