我正在搜索以@ 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