There could be some trouble with sed on special cases. As has been suggested in many places (e.g.) - not to use regexps but a html parser engine. One such easily available parser is contained in the text only browser lynx (available on any linux). Then you just extract the urls you want with grep.
lynx -dump -listonly myhtmlfile.html | grep IWANTthis | sort -u
However this will not work on mangled html files (cannot be parsed properly) or text snippets with links. Another simple way is to chain. If you have a text snippet like yours in a text file called st3.txt you can do as follows:
grep http ./st3.txt | sed 's/http/\nhttp/g' | grep ^http | sed 's/\(^http[^ <]*\)\(.*\)/\1/g' | grep IWANTthis | sort -u
grep http ./st3.txt => will catch lines with http from text file
sed 's/http/\nhttp/g' => will insert newline before each http
grep ^http => will take only lines starting with http
sed 's/\(^http[^ <]*\)\(.*\)/\1/g'
=> will preserve string from ^http until first space or <
grep IWANTthis => will take only urls containing your text of interest
sort -u => will sort and remove duplicates from your list