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 : Sélectionner tout - Visualiser dans une fenêtre à part
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