I see people have explained the regex itself but not how it's doing what you want.

It's actually removing everything up until a dot is found

s/// is used to find and replace so this little regex is searching your string eg http:://www.domain4you.com

finding everything up until a dot is found in this case the "http:://www" part and replacing it with nothing.

Now I have a little regex question:

why was ^[^\.]+ suggested rather than ^.*?\. as a pattern.

I'll explain the difference to assist:

^[^\.]+
^ means start at the beginning of the string
[^\.] match any character but a .
+ do the match multiple times... as many as possible in fact.

^.*?\.
^ means start at the beginning of the string
.*? means match any character as many times as possible until the next character is found
\. means a literal . (the next character)


So that pattern I just gave means start at beginning, match any characters until you reach the first dot.

I would have thought the later pattern would be more efficient, but I don't know the mind of regex so couldn't say for sure.

HTH

Angie

On 16 Apr 2004, at 16:35, B. Fongo wrote:


This regex by Rob is working alright, but can't follow exactly how it truncates an absolute url from first character to the one before the dot.

It returns (.domain4you.com from http:://www. domain4you.com.) exactly
what is expected, but I can't easily understand it.

Please I'm not pulling anyone's leg. So just explain it if you can.

(.domain4you.com from http:://www. domain4you.com.)


foreach (@domains) { my $name = $_; $name =~ s/^[^\.]+//; print $name; }


-----Original Message----- From: B. Fongo [mailto:[EMAIL PROTECTED] Sent: Thursday, April 15, 2004 7:29 PM To: [EMAIL PROTECTED] Subject: Regex to match domain for cookie


How do I match a domain name starting from the dot?


# Match something like these
".domain4you.co.uk"
".domain-house.de"


This is what I have:



@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";


}




Babs






-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>




--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to