我正在尝试编写一个将姓氏、名字中间首字母交换为名字姓氏的正则表达式。
所以,例如
doe, john j
another example:
doe, jane
变成
john doe
2nd example results
jane doe
我试过这个:(\w+?), (.+?)(&|-) ((\w+?),(.+?)(&|-))*(.+)和这个:^(\w+), *([\w \.]+)[ ]+-[ ]*(.*)
都不工作。
任何帮助,将不胜感激。
谢谢,
我正在尝试编写一个将姓氏、名字中间首字母交换为名字姓氏的正则表达式。
所以,例如
doe, john j
another example:
doe, jane
变成
john doe
2nd example results
jane doe
我试过这个:(\w+?), (.+?)(&|-) ((\w+?),(.+?)(&|-))*(.+)和这个:^(\w+), *([\w \.]+)[ ]+-[ ]*(.*)
都不工作。
任何帮助,将不胜感激。
谢谢,
替换^([a-zA-Z]+?),\s*([a-zA-Z]+?)(\s+[a-zA-Z])?$为$2 $1应该适合您的需要。
请注意,我没有使用\w该类,因为它也匹配下划线 ( ) 和数字,而且_我从未见过姓名为John_ D0e;)
可能这可能会有所帮助:
perl -e '$name = "doe, john j"; $name =~ /(.*?), (.*)/is; $fname = $2; $lname = $1; $fname =~ s/\s.*//is; $name = $fname. " " . $lname; print "$name\n";'