Co robi (?: Zrobić w wyrażeniu regularnym)

Natknąłem się na wyrażenie regularne, którego nie rozumiem w pełni - czy ktoś może mi pomóc w jego rozszyfrowaniu:

^home(?:\/|\/index\.asp)?(?:\?.+)?$

Jest używany w dopasowaniu adresu URL, a powyższy przykład pasuje do następujących adresów URL:

home
home/
home/?a
home/?a=1
home/index.asp
home/index.asp?a
home/index.asp?a=1

Wydaje mi się, że znaki zapytania w nawiasach(?: nic nie rób. Czy ktoś może mnie oświecić.

Wersja używanego wyrażenia regularnego jest dostarczana z klasyczną ASP i jest uruchamiana na serwerze, jeśli to w ogóle pomaga.

questionAnswers(3)

yourAnswerToTheQuestion