我希望修剪一个字符串,该字符串将通过逐行读取文件而创建。但是我只想从字符串中提取电子邮件,但每次都会更改。唯一的内容是域,例如 @domain.com
。
所以对于输入字符串为
00:00:50,004 ERROR [SynchronousCallback] Cannot process resource: test.test@domain.com Channel: channel16
什么正则表达式会找@domain.com
,把所有的test.test@domain.com
都拉出来。我有一个正则表达式可以查找字符串 m/@domain.com/i
但我不知道如何在 @domain.com
被访问后操作该字符串位于整个字符串中。
我想要的输出只是电子邮件 test.test@domain.com
最佳答案
#!/usr/bin/env perl
use strict; use warnings;
use Email::Address;
while (my $line = <DATA>) {
my ($addr) = Email::Address->parse($line);
print $addr->address, "\n";
}
__DATA__
00:00:50,004 ERROR [SynchronousCallback] Cannot process resource: test.test@domain.com Channel: channel16
输出:
C:\temp> tt test.test@domain.com
关于regex - 在 Perl 中,如何从日志文件的行中提取电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109948/