Leser: 26
/http:\/\/[\w-\.]+(FOO.DE)[\/]?(?=[.+])/xmsi
$meinevariable =~ /http:\/\/www\.foo\.de($|\/.*)/i
$meinevariable =~ /http:\/\/www\.foo\.de($|\/[^\/]*)/i
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
use strict; use warnings; my @allowed = qw~ foo.de bar.de ~; my $allowed = join '|', map quotemeta($_), @allowed; my $url_ok = qr~ ^http://([^/]+\.)?($allowed)(/.*)?$ ~ix; while (my $url = <DATA>) { chomp $url; print "$url:\n"; if ($url =~ m/$url_ok/) { print " domain: $2\n"; print " subdomain: $1\n"; print " path: $3\n"; } else { print " not accepted\n"; } print "\n"; } __DATA__ http://www.example.com/foo/bar http://www.foo.de/blubb http://www.foo.de http://bar.de/boing http://bar.de http://www.foo.de.vu/blubb http://foo.de.vu/didumm http://foo.de.vu
/^http:\/\/([^/]+\.)?([a-z0-9-]+\.[a-z]{2,5})(/.*)?$/
2009-04-25T16:49:39 rooootDanke erstmal, aber jetzt habe ich ein neues Problem:
trifft wunderbar alle Domains bis auf die, in denen es 2 TLD gibt. Beispielsweise .co.uk oder .de.vu. Dort habe ich den Fall, dass statt der Domain foo.de.vu nur die TLDs gespeichert werden, beispielsweise .de.vu.Code (perl): (dl )/^http:\/\/([^/]+\.)?([a-z0-9-]+\.[a-z]{2,5})(/.*)?$/
Wie kann ich das umgehen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use URI; while ( my $url = <DATA> ) { my $uri = URI->new($url); print $uri->host, "\n"; } __DATA__ http://www.example.com/foo/bar http://www.foo.de/blubb http://www.foo.de http://bar.de/boing http://bar.de http://www.foo.de.vu/blubb http://foo.de.vu/didumm http://foo.de.vu