为什么正则表达式 .* 可以匹配出所有内容?

我认为要么啥也匹配不出来,
要么匹配出诸如aaaaaaaaaaaaa...等重复首个字母的字符串,首个字母可以为任意字母

“.”可以代表任何字符,所以“.*”可以是abccdsvasdad,诸如这样的都可以,相当于{a,b,c....,z}*.追问

你好,我想请教一下
"." 表示除\n之外的任意单个字符
"*" 表示希望匹配的字符串含有任意数目的字符
所以, 我认为".*" 只能表示[:alnum:]*, 而不能表示所有字符串
也就是说,假设"." 给了我们单独一个字符a,那么组合后面的"*",应该等价于"a*"
我知道这个想法有问题,但是不知道怎么说服自己

追答

你的理解有偏差,不是说"."第一次取值为"a"了,后面"."就都被赋值为"a"了,你可以把".*"理解成这样,".*"="..........",每个点都能接受任何字符。如果你把".*"理解为"a*",那么举个反例,ab能被".*"接受吗?可以的。但是ab能被"a*"接受吗?不可以。换做任何字母的*都不可以接受。所以你的假设是错的。

温馨提示:答案为网友推荐,仅供参考
相似回答