pra*_*abu 1 perl parsing email-address
我想分割一个字符串,如果它包含;或,.
例如:
$str = "a@a.com;b@b.com,c@c.com;d@d.com;";
Run Code Online (Sandbox Code Playgroud)
预期的结果是:
result[0]="a@a.com";
result[1]="b@b.com";
result[2]="c@c.com";
result[3]="d@d.com";
Run Code Online (Sandbox Code Playgroud)
Sin*_*nür 11
当然,您可以使用其他人显示的拆分.但是,如果$str包含完整的电子邮件地址,您将处于一个受伤的世界.
相反,使用Email :: Address:
#!/usr/bin/perl
use strict; use warnings;
use Email::Address;
use YAML;
print Dump [ map [$_->name, $_->address ],
Email::Address->parse(
q{a@a.com;"Tester, Test" <test@example.com>,c@c.com;d@d.com}
)
];
Run Code Online (Sandbox Code Playgroud)
输出:
--- - - a - a@a.com - - 'Tester, Test' - test@example.com - - c - c@c.com - - d - d@d.com
my $str = 'a@a.com;b@b.com,c@c.com;d@d.com;';
my @result = split /[,;]/, $str;
Run Code Online (Sandbox Code Playgroud)
请注意,您不能使用双引号来分配,$str因为它@是特殊的.这就是我用单引号替换字符串分隔符的原因.你也可以像这样逃避它们:
my $str = "a\@a.com;b\@b.com,c\@c.com;d\@d.com;";
Run Code Online (Sandbox Code Playgroud)