Regex 使用perl提取电子邮件的一部分

Regex 使用perl提取电子邮件的一部分,regex,perl,Regex,Perl,我有一个像弗拉维乌斯这样的电子邮件地址。david@yahoo.com. 我想把大卫救出来。我已经试过了 `"m[^([^.]*)-([^+]*)\@.*$];"` print " $&\n"; 但是,result是唯一的。您可以使用以下正则表达式: /[^.]+(?=@)/ 如果您同时需要这两个部分,那么您的原始正则表达式很接近,但应该是: ^([^.]*)\.([^@]*)@.*$ 这取决于你在做什么,但我会写一些 my @names = $email =~ /\w+/g;

我有一个像弗拉维乌斯这样的电子邮件地址。david@yahoo.com. 我想把大卫救出来。我已经试过了

`"m[^([^.]*)-([^+]*)\@.*$];"`  
print " $&\n";

但是,result是唯一的。

您可以使用以下正则表达式:

/[^.]+(?=@)/

如果您同时需要这两个部分,那么您的原始正则表达式很接近,但应该是:

^([^.]*)\.([^@]*)@.*$

这取决于你在做什么,但我会写一些

my @names = $email =~ /\w+/g;
my $sname = $names[1];

我试过这个,但不起作用。看到结果了吗?它也在那里工作。。。完整匹配始终是完整结果,您必须访问匹配组。。。第1组是项目开始前的第一部分。第二组是第二个名字。。。查看匹配组框或尝试正则表达式链接,我只是修复了它,有一个错误的链接,不能变短,并匹配所有部分。。。我喜欢它: