正则表达式只选择2个名称

时间:2015-11-27 00:02:34

标签: regex perl

输入是John Doe,期望的输出是Doe,John。糟糕的输入是John Smith Doe

我的代码是

    if ($input =~ m/([A-Z][a-z]*)\s([A-Z][a-z]*)$/){
    print "$2, $1";
}

它与John Doe一起使用,但当John Smith Doe进入时,我想显示一条错误消息,但我的代码显示了Doe,Smith。我做错了什么?

1 个答案:

答案 0 :(得分:2)

你几乎就在那里,你需要使用匹配行元字符开头(^):

if ($input =~ /^([A-Z][a-z]*)\s([A-Z][a-z]*)$/){
    print "$2, $1";
}

请参阅http://perldoc.perl.org/perlre.html#Regular-Expressions