我正在搜索以@ enron.com结尾的所有有效电子邮件地址的字符串。模式的Perl搜索字符串:*@enron.com
我的任务是以下行:
my $enronAddress =~/^(.+?)@\@enron\.com/i;
这不作任何任务,所以我不知道我做了什么错在这里。
我正在搜索以@ enron.com结尾的所有有效电子邮件地址的字符串。模式的Perl搜索字符串:*@enron.com
我的任务是以下行:
my $enronAddress =~/^(.+?)@\@enron\.com/i;
这不作任何任务,所以我不知道我做了什么错在这里。
你在字符串中寻找所有有效地址,或检查完整的字符串是一个有效的地址?我不明白你所说的“这不进行任何分配”,因为所有你写的意思是一个正则表达式模式匹配
首先,你有你的格局,这显然是两个错误的@
迹象
在很大程度上取决于你认为什么是有效的电子邮件地址,但一开始,这将检查$enronAddress
内容是否是一个有效的地址
if ($enronAddress =~ /^[^@\s]+\@enron\.com$/i) { ... }
,这将打印出现在$enronAddress
所有有效地址
print "$_\n" for $enronAddress =~ /[^@\s]+\@enron\.com/gi;
我试图从字符串中提取有效的电子邮件地址,谢谢! – b15
为什么不尝试匹配一个简单的“字符串结束”正则表达式呢?使用Perl的调试器:
DB<3> x '[email protected]' =~ /\@enron\.com$/
0 1
DB<4> x '[email protected]' =~ /\@enron\.com$/
empty array
这些显示你找到正确的模式。然后捕获添加到它:
DB<5> x ($user) = ('[email protected]' =~ /(.+)\@enron.com$/)
0 'foo'
DB<6> x $user
0 'foo'
在代码中它会看起来像:
#!/usr/bin/perl
my ($user) = ('[email protected]' =~ /(.+)\@enron\.com$/);
print "$user\n";
你检查对正则表达式未初始化的变量。这可能不是你想要的。
如果您有$address
的电子邮件地址,你会做这样的事情:
my $address = '[email protected]';
if ($address =~ /^(.+)\@enron\.com$/) {
my $to = $1;
}
它不是一个任务,它是比较未初始化的变量对一个正则表达式。如果没有更多的情况下,这是很难解决您的代码,但一开始,把这个在你的脚本的顶部:
use strict;
use warnings;
做,在你从现在起每写新的脚本。
然后可能像
my $text = <>;
my $addr = $text if $text =~ /\@enron\.com$/;
我缩进了你的代码,使它呈现为代码,hth。那里应该有两个@字符? –
您可能需要开始[这里](http://perldoc.perl.org/perlretut.html)。 – lanzz