Regex Perl从电子邮件地址inc tld提取域名,但不包括子域
我试着按照标题所说的去做,我得到了:Regex Perl从电子邮件地址inc tld提取域名,但不包括子域,regex,perl,subdomain,tld,Regex,Perl,Subdomain,Tld,我试着按照标题所说的去做,我得到了: sub getDomain { my $scalarRef = shift; my @from_domain = split(/\@/,$$scalarRef); if($from_domain[1] =~ m/^.*?(\w+\.\w+)$/){ print "$from_domain[1] $1" if($username eq 'xxx'); return $1; } } 适合user@
sub getDomain {
my $scalarRef = shift;
my @from_domain = split(/\@/,$$scalarRef);
if($from_domain[1] =~ m/^.*?(\w+\.\w+)$/){
print "$from_domain[1] $1" if($username eq 'xxx');
return $1;
}
}
适合user@domain.com返回domain.com,但domain.co.uk当然会返回.co.uk,我需要domain.co.uk。任何关于如何进行此操作的建议,我猜是一个模块,有些建议是某种tld查找表。不要使用RegExp
use Email::Address;
my ($addr) = Email::Address->parse('foo@domain.co.uk');
print "Domain: ".$addr->host."\n";
print "User: ".$addr->user."\n";
印刷品:
Domain: domain.co.uk
User: foo
不要使用RegExp
use Email::Address;
my ($addr) = Email::Address->parse('foo@domain.co.uk');
print "Domain: ".$addr->host."\n";
print "User: ".$addr->user."\n";
印刷品:
Domain: domain.co.uk
User: foo
我想你在这里运气不好。将为您提供TLD列表,但实际上这不是您想要的 据我所知,如果有一个电子邮件地址user@sub.domain.com,您想获取domain.com。这里的TLD是“com”,您需要TLD及其前面的域的部分。那很容易 然后是user@sub.domain.co.uk. 此处TLD为“英国”。但是在这里,您不需要TLD和它前面的域的部分-您需要在TLD之前有两个部分 所以也许你需要一个启发。如果TLD有三个字母长,则取域的前一部分;如果TLD有三个字母长,则取前两部分 但这也不行。并非所有的CCTLD都像.uk那样定义了子域。以流行的.tv ccTLD为例。它们允许您直接在ccTLD下注册域 所以你不需要一个TLD列表。您还需要了解每个TLD适用于注册的规则。它们可能会随着时间的推移而改变。新的TLD正在被引入-您需要跟上所有这些 哦,还有最后一点。即使是像.uk这样的大型CCTL也不总是遵循自己的规则。有一些.uk域没有顶级子域-.british-library。例如
您可能能够为您特别感兴趣的域子集实现这一点。但是一个完整的解决方案将是极其复杂的,而且几乎不可能跟上时代的发展。我认为你在这里运气不好。将为您提供TLD列表,但实际上这不是您想要的 据我所知,如果有一个电子邮件地址user@sub.domain.com,您想获取domain.com。这里的TLD是“com”,您需要TLD及其前面的域的部分。那很容易 然后是user@sub.domain.co.uk. 此处TLD为“英国”。但是在这里,您不需要TLD和它前面的域的部分-您需要在TLD之前有两个部分 所以也许你需要一个启发。如果TLD有三个字母长,则取域的前一部分;如果TLD有三个字母长,则取前两部分 但这也不行。并非所有的CCTLD都像.uk那样定义了子域。以流行的.tv ccTLD为例。它们允许您直接在ccTLD下注册域 所以你不需要一个TLD列表。您还需要了解每个TLD适用于注册的规则。它们可能会随着时间的推移而改变。新的TLD正在被引入-您需要跟上所有这些 哦,还有最后一点。即使是像.uk这样的大型CCTL也不总是遵循自己的规则。有一些.uk域没有顶级子域-.british-library。例如 您可能能够为您特别感兴趣的域子集实现这一点。但一个完整的解决方案将是难以置信的复杂,几乎不可能跟上时代的步伐