* significa que o padrão imediatamente anterior é repetido, não que o texto correspondente seja repetido. Por exemplo, [ab]* significa (|[ab]|[ab][ab]|[ab][ab][ab]|…) O padrão [ab] é repetido zero ou mais vezes. Ele corresponderá a "aba" porque isso preenche corretamente o padrão [ab][ab][ab] .
Com .* , torna-se (|.|..|...|....|…) , portanto, corresponde a qualquer número de caracteres e os caracteres podem diferir.