Regex 通过正则表达式仅选择2个名称

Regex 通过正则表达式仅选择2个名称,regex,perl,Regex,Perl,输入是JohnDoe,期望的输出是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。我做错了什么?你差不多做到了,你需要使用匹配行首的元字符(^): 请参见完美!我感谢你的帮助@ValeriaKaya

输入是JohnDoe,期望的输出是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。我做错了什么?

你差不多做到了,你需要使用匹配行首的元字符(
^
):


请参见

完美!我感谢你的帮助@ValeriaKaya没问题,还要注意,
*
将匹配零次或更多次。这意味着
mj
将是匹配的,如果你使用
+
它将匹配一次或多次,还可以看看
{n,M}
@ValeriaKaya在询问之前帮助那些有效果的人总是很好的:-)从好的人那里得到帮助也很好,而不是那些说“去阅读手册”的人" ;)@ValeriaKaya从技术上讲,我说过你应该阅读手册;-)
if ($input =~ /^([A-Z][a-z]*)\s([A-Z][a-z]*)$/){
    print "$2, $1";
}