Wyrażenia i kwantyfikatory to zupełnie inne rzeczy w wyrażeniach regularnych.
Pojedynczy znak np a
, s
, 9
, x
znaczą dokładnie to co przedstawiają, czyli as9
matchuje dokładnie as9
.
Wyrażenia specjalne takie jak \s
albo \d
znaczą "dowolny whitespace" albo "dowolna cyfra". Czyli np \d
zmatchuje 9
ale zmatchuje też 8
albo 0
. "Dowolny whitespace" to spacja, enter albo tab. Kropka .
matchuje każdy znak.
Kwantyfikatory, np +
, ?
, *
, {10}
, {3,14}
określają ile raz poprzedzające je wyrażenie może się pojawić.
Czyli np a{10}
matchuje tylko wyrażenie aaaaaaaaaa
(10 razy a). Podobnie jak a{4,10}
pasuje do ilości liter a
od 4ech do 10.
Wyrażenie a*
oznacza dowolną ilość liter a
(również zero tych liter, czyli pusty string). Ciąg a+b?
oznacza "jeden lub więcej znaków a
" oraz "jeden lub zero znaków b
".
Wracając do Twojego pytania, \s*
znaczy dowolna ilość whitespaców (dlatego że \s
znaczy dowolny whitespace (enter/tab/spacja) a *
znaczy dowolna ilość tych znaków). Za to sama spacja i gwiazdka, czyli *
znaczy "dowolna ilość spacji".