> -----Original Message-----
> From: Babale Fongo [mailto:[EMAIL PROTECTED]
>
> How do I match a domain name starting from the dot?
>
>
> @domains = ("http://www.domain.com ", "http://www.domain4you.co.uk
> "http://www.domain-house.de" "https//rrp.cash-day.com"
> );
>
>
> foreach (@domains){
>
> $_ =~ /^\D ([\.A-Za-z0-9]+[\.\D])$/; # What is wrong here?
> # Need ".domain.com", but I get "ww.domain.com"
> $x = $1;
> print "$x";
>
>
> }
>
I�d say that your regex does not match on any of the domains - you're
searching for
1) a non digit "\D"
2) followed by a space
...
If you ask me, this cannot work in domain names, but then I don't know
why you're getting any results at all...
Personally, I'd write the regex like this:
m!(?:.*?)://(?:www)*(.*)!;
This translates into:
- (?:.*?) any characters, but non-greedy (stop matching when you "see" the
next characters.
- the "://" sequence
- an optional "www"
- all the rest
Please note that the "?:" at the beginning of a pair of brackets means that
this bracket is not translated into one of the $1,$2,...-variables, but is
used for grouping only.
The full script then looks like this:
#!/usr/bin/perl -w
use strict;
my @domains = ("http://www.domain.com ", "http://www.domain4you.co.uk",
"http://www.domain-house.de", "https://rrp.cash-day.com"
);
foreach (@domains){
m!(?:.*?)://(?:www)*(.*)!;
print "$1\n";
}
HTH,
Philipp Traeder
ImmobilienScout24.de
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>