まず、私の名前に句読点がある人として:-)\w
名前を一致させるために使用しないでください:-) … と の両方は珍しいことではありません-
。'
たとえば、Perl を使用すると、次のようになります。
if ("Bruce-Robert Fenn Pocock" =~ /^(\w+)(.*)$/) { print "First: $1 Rest: $2" }
→ First: Bruce Rest: -Robert Fenn Pocock
おそらく、スペース以外のすべての文字をグループ化し、最初に出現する空白をスキップします。
if ("Bruce-Robert Fenn Pocock" =~ /^(\S+)\s*(.*)$/) { print "First: $1 Rest: $2" }
→ First: Bruce-Robert Rest: Fenn Pocock
もちろん、データセットでミドルネームを持つ人に出くわした場合、母と父のペアまたは複数の部分からなる姓と区別する方法はありません。
入力にも敬語がないことを願っています/仮定します。
First: Don Rest: Juan de la Mancha
*** wrong: Don is honorific
First: Diego Rest: de la Vega
First: John Rest: Jacob Smith
*** wrong: Jacob is probably a middle name
First: De'shawna Rest: Cummings
First: Wehrner Rest: von Braun
First: Oscar Rest: Vazquez-Oliverez
最終的に、名前を正確に敬称、名、ミドルネーム、姓 (母称、父称)、および接尾辞に分解する唯一の方法は、.
(例: 私自身の名前は、英語圏では「Fenn」は「ミドル ネーム」と見なされ、ラテン系圏では女性名詞として解釈されます。)
敬称と接尾辞は、リストから推測できることがよくありますが、たとえば、軍の肩書と博士号の接尾辞は長いリスト (「Dr John Doe, Pharm.D」、「Maj. Gen. Thomas Ts'o」) であり、明確ではありません (たとえば、"Don" は "Donald" の短縮形であり、敬称でもあります)。
PS。ここの素敵な記事:
http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/