1

我正在尝试编写一个将姓氏、名字中间首字母交换为名字姓氏的正则表达式。

所以,例如

 doe, john j
    another example: 
 doe, jane

变成

john doe
   2nd example results
jane doe

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

都不工作。

任何帮助,将不胜感激。

谢谢,

4

2 回答 2

1

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

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

于 2013-02-12T18:27:59.863 回答
0

可能这可能会有所帮助:

perl -e '$name = "doe, john j"; $name =~ /(.*?), (.*)/is; $fname = $2; $lname = $1; $fname =~ s/\s.*//is; $name = $fname. " " . $lname; print "$name\n";'
于 2013-02-12T17:35:07.713 回答