Wyrażenia regularne PHP

Mam problem z wyrażeniami regularnymi otóż potrzebuje wyszukiwać wszystkie linki na stronie.
Znalazłem wyrażenie ((\:href=\"|(http(s?))\:\/\/){1}\S+) któro działa dla href=“http://www.test.pl/docs.php”> ale nie działa gdy w href nie ma http://
Chciałbym aby wyrażenie wycinało mi tylko link czyli znaki pomiędzy cudzysłowy ale nie mam pojęcia jak to rozwiązać.

Szczerze mówiąc nie rozumiem tego Twojego wyrażenia, tam jest sporo zbędnych znaków. Ja bym użył takiego:
href="((?:http(s?)\:\/\/)?[^"]*)"