0

以下の例では、正規表現で 2 つのグループを作成します。

名前 FirstSurname SecondSurname ..

最初のグループは Name です

2番目のFirtSurname SecondSurname ...

^(\w+)(.*)$   - would capture all
\w+           - would make n groups (number of words). 

2グループだけ欲しい。ファーストネームとそれに続くもの。

何か助けはありますか?

4

3 に答える 3

4

まず、私の名前に句読点がある人として:-)\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/

于 2014-02-05T16:29:12.680 に答える
1

グループ 1 の最初の名前だけが必要で、グループ 2 の残りの名前が必要であると仮定します。

^(\b[\w]+\b)([\w\W]+)

于 2014-02-05T16:26:47.727 に答える