Greetings,

Here is one way of doing it. I admit there will be better solutions to this.

while (<DATA>) {
    if(/
        (\w+) #Match dns
        \.       #Match dot
        (\w+) #Match support
        (@)   #Match @
        (\w+) #Match dnsbed
        \.       #Match dot
        (\w+) #Match com
        /x) {
    print "$1.$2$3$4.$5";
    }
}

__DATA__
dns.supp...@dnsbed.com
 
best,
Shaji 
-------------------------------------------------------------------------------
Your talent is God's gift to you. What you do with it is your gift back to God.
-------------------------------------------------------------------------------


________________________________
 From: Guoke Zhou (Wicresoft) <v-guo...@microsoft.com>
To: Feng He <fen...@nsbeta.info> 
Cc: "beginners@perl.org" <beginners@perl.org> 
Sent: Friday, 21 December 2012 2:01 PM
Subject: RE: Help with a regex
 

$string='dns\.support.dnsbed.com';  
print "$string\n";
if ($string =~ /^(.*?)\\\.(.*?)(?<!\\)\.(.*)$/) {
        print $1.".".$2."@".$3;
     }

Output:
dns\.support.dnsbed.com
dns.supp...@dnsbed.com

我猜你遇到的是转义的问题。。。

-----Original Message-----
From: Feng He [mailto:fen...@nsbeta.info] 
Sent: Friday, December 21, 2012 3:39 PM
To: beginners@perl.org
Subject: Help with a regex

Hello,

I have a string like: dns\.support.dnsbed.com I want to translate it to a 
regular email address: dns.supp...@dnsbed.com


    if ($string =~ /^(.*?)(?<!\\)\.(.*)$/) {
        my $user = $1;
        my $tld = $2;
        return $user . '@'. $tld;
     }

But this won't work correctly. I got:
d...@support.dnsbed.com

Where do I get wrong? Thanks.

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, 
e-mail: beginners-h...@perl.org http://learn.perl.org/ 

Reply via email to