Regex 如何创建交换lastname、firstname中间首字母的正则表达式

Regex 如何创建交换lastname、firstname中间首字母的正则表达式,regex,replace,expression,Regex,Replace,Expression,我正在尝试编写一个正则表达式,将lastname,firstname middleinitial交换为firstname lastname 比如说 doe, john j another example: doe, jane 变成 john doe 2nd example results jane doe 我试过:(\w+?)、(.+?)(&|-)(\w+?)、(.+?)(&|-)*(.+),还有:^(\w+)、*([\w\.]+)[+-[]*(. 两者都不起作用 任何帮

我正在尝试编写一个正则表达式,将lastname,firstname middleinitial交换为firstname lastname

比如说

 doe, john j
    another example: 
 doe, jane
变成

john doe
   2nd example results
jane doe
我试过:
(\w+?)、(.+?)(&|-)(\w+?)、(.+?)(&|-)*(.+)
,还有:
^(\w+)、*([\w\.]+)[+-[]*(.

两者都不起作用

任何帮助都将不胜感激


谢谢,

可能会有帮助:

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

也许这会有帮助:

perl -e '$name = "doe, john j"; $name =~ /(.*?), (.*)/is; $fname = $2; $lname = $1; $fname =~ s/\s.*//is; $name = $fname. " " . $lname; print "$name\n";'
^([a-zA-Z]+?)、\s*([a-zA-Z]+?)(\s+[a-zA-Z])?$替换为
$2$1
应符合您的需要

请注意,我没有使用
\w
类,因为它也匹配下划线(
\uu
)和数字,而且我还从未见过名为
John\uD0e
的人。)

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


请注意,我没有使用
\w
类,因为它也匹配下划线(
\uu
)和数字,而且我还从未见过名为
John\uD0e
的人。)

能否提供更多应匹配的输入字符串示例?您似乎也想允许
&
-
字符。我添加了另一个示例。。它将始终是lastname,firstname,但有些具有lastname,firstname中间首字母。并非所有人都有中间首字母。我正在尝试将结果设置为firstname lastname。您能提供更多应该匹配的输入字符串示例吗?您似乎也想允许
&
-
字符。我添加了另一个示例。。它将始终是lastname,firstname,但有些具有lastname,firstname中间首字母。并非所有人都有中间首字母。我试图将结果设置为firstname lastname$name=~/(.*),(.*)/is$fname=$2$lname=$1$fname=~s/\s.*//is$name=$fname。" " . $名称;打印“$name\n”对于您给出的另一个示例:perl-e'$name=“doe,john”$name=~/(.*),(.*)/is$fname=$2$lname=$1$fname=~s/\s.*//is$name=$fname。" " . $名称;打印“$name\n”