正则表达式 "ab", ".*"

为什么 ".*"可以匹配 "ab"

.表示任意字符
*表示大于等0个
如果.匹配a 那么*匹配的应该是大于等于0个a不是么?
匹配'aa','aaa',空串这样不是么?
为什么匹配'ab'呢?

.*是匹配一切的意思
你都知道了.是任意字符了,匹配到a也没有任何意义,只能说明a是.的一个子集,同理b也是一个子集都应匹配出来的;
只匹配a的话,可以这样a{1,5}追问

我不明白 .只能匹配一个字符 *不是匹配*前面的字符任意个么?
为什么.匹配了a 结果可以有任意个的是b?
.匹配到什么 什么就可以有任意个
如果是ab 不是应该是.b*么?

追答

你把你的这句话,好好重复一遍:“为什么.匹配了a 结果可以有任意个的是b?”
包含关键点:结果可有任意个
不管他匹配什么,这就是*的意义,就是可以有任意个。
你所说的是,既然找到了a了,应该把a"锁定",匹配任意个a
我要跟你说的是,这是正则的规则,记住就好。这样设计是顾全大局的,让正则写起来没那么复杂。
.*是最常用的操作,匹配个abcd都要很长的正则,无疑会增大难度。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-09
因为'*'表示前一个元素的0个或多个重复。
而在".*"这个字符串中,'*'的前一个元素是什么呢?
注意是'.'这个元素!也就是说".*"可以代表空字符"",也可以代表任意个'.'(比如"."或".."或"..."或"..."等等)
这样理解,".*"就可以匹配任意字符串了,因为它含有任意0到多个万能匹配字符'.'。
第2个回答  2018-03-01
因为.直接匹配了ab
你可以去掉*匹配一下,看结果为true就知道了
相似回答