I would go for chaining but a bit different. If you have a text snippet like yours in a text file called strings.txt you can do as follows:
grep http ./strings.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 < (the latter in hope if
grep IWANTthis => will take only urls containing your text of your interest; you can omit this.
sort -u => will sort the list and remove duplicates from it
As there is a chance the url might not work you could do additional error checking with your URL of interest. e.g.
wget -p URL -O /dev/null - it will print quite different error codes in case the URL is not available, so you could set up a loop to process your list of links and output their validity status.
If you are ultimately extracting links from html files then there can be some trouble with
sed in special cases. As it has been suggested in a funny (post) that you probably have seen already - it may be best not to use regexps but a html parser engine. One such easily available parser is the text only browser
lynx (available on any linux). This allows you to instantly dump list of all links in a file and then you just extract the urls you want with grep.
lynx -dump -listonly myhtmlfile.html | grep IWANTthisString | sort -u
However this will not work on most mangled html files or text snippets with links.