在正则表达式中,包括.通配符和*通配符:
点号.可以匹配一个任意字符,仅1次。
星号*可以复制它之前那个字符任意次数,包括0次,即[0, +∞]次。

举例1:
模式串P:.a*m
文本串S:zaaam
匹配结果:成功
原因:
P的.匹配S的z
P的*复制了3次P的a 去匹配了S的3个a
P的m匹配了S的m

举例2:
模式串P:.a*m
文本串S:cm
匹配结果:成功
原因:
P的.匹配S的c
P的*复制了0次P的a (相当于a*消除了)
P的m匹配了S的m

举例3:
模式串P:a.a
文本串S:aaa
匹配结果:成功
原因:
P的a匹配S的a
P的.匹配了S的a
P的a匹配了S的a

举例4:
模式串P:am*ac*a
文本串S:aaa
匹配结果:成功
原因:
P的a匹配S的a
P的*复制了0次P的m(消除m
P的a匹配了S的a
P的*复制了0次P的c(消除c
P的a匹配了S的a

举例5:
模式串P:aa.a
文本串S:amna
匹配结果:失败
原因:
第一步P的a匹配S的a虽然是成功的,
但是第二步P的a必须只能匹配S的m ,因为它后边是.
a不等于m,所以匹配失败了。

最牛的是下方这个:
举例6:
模式串P:.*
文本串S:随便什么文本
匹配结果:成功
原因:
P的*可以复制任意个P的.来匹配S串,
因为一个.可以匹配一个任意字符,
比如模式串.可以匹配文本串amc,而.是P中的*复制了1个.而来的。
比如模式串..可以匹配文本串abmccc,而..是P中的*复制了2个.而来的。
比如模式串...可以匹配文本串aaaamcacc,而...是P中的*复制了3个.而来的。
比如模式串....可以匹配文本串aaaaamcdaccd,而....是P中的*复制了4个.而来的。

更多推荐

正则表达式 .* (正确理解通配符.和通配符*)