Lynx: man tur drukas kļūda bija: ~ ar $ biju otrādi uzlicis, tagad salaboju.
A par tavu kodu: Kāda jēga lietot a-z, ja ir \w vai 0-9, ja ir \d. Un šī daļa "[a-z0-9\-]+\.([a-z0-9\-]+\.)*?" tavā regexpā var tikt aizstāta ar vienkārši "([a-z0-9\-]+\.)+", pie tam, kāda jēga no *?, ja jau * nozīmē 0..n, tad pieliekot ? nemainās pilnīgi nekas!