Perl中的正则表达式,用于电子邮件分割

Jas*_*ssi 3 regex perl email-validation

我的同行问我,你最后会找到@ if more than one@`的样子.

例:

j@ssi@aliencoders.com@..coding.com
Run Code Online (Sandbox Code Playgroud)

所以它应该显示j@ssi@aliencoders.com为用户名和 ..coding.com域名.Perl中是否有任何一个衬垫正则表达式可以获得所需的输出?

Eug*_*ash 8

my ($username, $domain) = $str =~ /(.*)@(.*)/;
Run Code Online (Sandbox Code Playgroud)

有关perlre的更多信息:

默认情况下,量化的子模式是"贪婪的",也就是说,它将尽可能多地匹配(给定一个特定的起始位置),同时仍然允许模式的其余部分匹配.


Kon*_*rak 6

只要用贪婪:

/(.*)@(.*)$/
Run Code Online (Sandbox Code Playgroud)

第一部分将尽可能多地使用,直到遇到@.最后一部分将把@后面的所有内容都带到行尾.