用python编写正则表达式时.* , (.)* , [.]*分别代表什么意思?

新手上路,请多包涵

题目描述

如题,我是一个初学者,刚刚学到正则表达式,想要了解一下点号的具体用法,就随便编了一段简单的代码。然后发现匹配的表达式分别是.,(.)和[.]*是匹配的结果大不相同。我想问一下这三者具体的区别,以及为什么会有这样的结果。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
import re
s= 'nhellonmy name isnBob'
r = re.findall('.*',s)
print(r)

r = re.findall('(.)*',s)

r = re.findall('[.]*',s)

代码结果

上面的代码,在匹配式是.*的时候结果是这样的
clipboard.png
这个我还差不多能理解
然后在(.)*的时候结果是这样的
clipboard.png
在[.]*的时候结果是这样的

clipboard.png
后两个我就不是很理解了,望大家帮忙解答一下,谢谢。
另外我看点号在正则表达式里面的意义是匹配除了换行符之外的字符,那么在上面的代码中,匹配完最后一个字符 'b'之后为什么还会匹配出来一个空字符''呢?

阅读 3k
2 个回答

又到了祭出我收藏多年的利器的时刻了,每逢这种问题必上它,请狠狠点击这里

这个工具呢,有教程、有参考文档、有调试、有分析、有常用正则收藏和分享,简直屌的飞起,居家旅行必备。

.*

匹配任意非换行字符 匹配结果可以0条 不关心匹配结果

(.)*

和上面一样 只不过这个关心匹配结果并保存到组

[.]*

和第一个一样
推荐问题