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 に答える