如何创建交换姓氏,名字中间首字母的正则表达式

时间:2013-02-12 17:24:19

标签: regex replace expression

我正在尝试编写一个正则表达式,将姓氏换成firstname,初始名称为firstname lastname。

所以,例如

 doe, john j
    another example: 
 doe, jane

成为

john doe
   2nd example results
jane doe

我试过这个:(\w+?), (.+?)(&|-) ((\w+?),(.+?)(&|-))*(.+)和这个:^(\w+), *([\w \.]+)[ ]+-[ ]*(.*)

都没有工作。

任何帮助都将不胜感激。

谢谢,

2 个答案:

答案 0 :(得分:1)

^([a-zA-Z]+?),\s*([a-zA-Z]+?)(\s+[a-zA-Z])?$替换$2 $1符合您的需求。

请注意,我没有使用\w类,因为它匹配下划线(_)和数字,而且我从未见过名字为John_ D0e的人;) 1}}

答案 1 :(得分:0)

这可能会有所帮助:

perl -e '$name = "doe, john j"; $name =~ /(.*?), (.*)/is; $fname = $2; $lname = $1; $fname =~ s/\s.*//is; $name = $fname. " " . $lname; print "$name\n";'