Probleme de regex - extraction url avec tiret
Bonjour
Il semblerai que j'ai un probleme avec mon code perl...Je pense que cela vient du regex.
Je souhaite extraire des url de plusieurs sites web.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
sub parseHosts {
my ($url) = @_;
my $content = `curl --header "User-agent: " $url 2>&1`;
my $hostpattern = "[a-z0-9][a-z0-9-]*[.][a-z.]+[a-z]";
my $p1 = "value=[\"]($hostpattern)[\"]";
my $p2 = "<li>($hostpattern)";
my $p3 = "<a>($hostpattern)";
my $c = 0;
while ($content =~ m/($p1)|($p2)|($p3)/igs) {
if ($maxhostsperurl > 0 && ++$c > $maxhostsperurl) {
print "<b>Thread " . threads->self()->tid() . " exiting, after $maxhostsperurl hosts in test mode.</b> Set \$maxhostsperurl to 0 for a full run. <br/>\n";
return;
}
if ($2) {
processHost($2);
} elsif ($4) {
processHost($4);
} elsif ($6) {
processHost($6);
}
}
} |
p1, p2, p3 fonctionnent pour tous les types d'url excepté s'il y a un tiret et www. Ex: mon-site.com sera trouvé mais pas www.mon-site.com
ou monsite.ho-la.com ou voila-mon-site.com de meme arrete-un-peu.co.uk ne sera pas trouvé (avec ou sans www. devant)
Je ne veux pas recupérer les http://
Pourriez vous m aider svp pour adapter le regex afin que les liens avec tirets soient aussi extraits?
merci