$ perl -lwe \
'$_="[http://a|alpha] [http://b|beta] [http://g]";
print;
# match with title
s{\[(http://[^\]\|]+)\|([^\]]+)\]} {$2\n}gi;
# match without title
s{\[(http://[^\]\|]+)\]} {$1\n}gi;
print'
[http://a|alpha] [http://b|beta] [http://g]
alpha
beta
http://g