Regex 正则表达式名称和任何姓氏

Regex 正则表达式名称和任何姓氏,regex,regex-group,knime,Regex,Regex Group,Knime,在下面的示例中,我想在正则表达式中创建两个组: 姓名Firt姓氏第二姓氏 第一组是 名字 第二 第一个姓第二个姓 ^(\w+)(.*)$ - would capture all \w+ - would make n groups (number of words). 我只想要两组。名字和其他名字后面的任何东西 有什么帮助吗?假设单词之间只有一个空格,这样做可以: (\w+) ([\w ]+) 如果可能有多个空格: (\w+) +([\w ]+) 要消除末端的空

在下面的示例中,我想在正则表达式中创建两个组:

姓名Firt姓氏第二姓氏

第一组是 名字

第二 第一个姓第二个姓

^(\w+)(.*)$   - would capture all
\w+           - would make n groups (number of words). 
我只想要两组。名字和其他名字后面的任何东西


有什么帮助吗?

假设单词之间只有一个空格,这样做可以:

(\w+) ([\w ]+)

如果可能有多个空格:

(\w+) +([\w ]+)
要消除末端的空格,请执行以下操作:

\b(\w+)\b \b([\w ]+)\b
如@brpoock所述,允许破折号和撇号:

\b([\w-']+)\b \b([\w -']+)\b
虽然这禁止在末尾加标点符号,但它允许多个破折号和撇号,包括彼此相邻的破折号和撇号,例如:
Mc'er''doo--dl-e


使其更加健壮可以成为其自身的一个项目。

假设词与词之间只有一个空格,这样做是可行的:

(\w+) ([\w ]+)

如果可能有多个空格:

(\w+) +([\w ]+)
要消除末端的空格,请执行以下操作:

\b(\w+)\b \b([\w ]+)\b
如@brpoock所述,允许破折号和撇号:

\b([\w-']+)\b \b([\w -']+)\b
虽然这禁止在末尾加标点符号,但它允许多个破折号和撇号,包括彼此相邻的破折号和撇号,例如:
Mc'er''doo--dl-e


使其比这更健壮可以成为其自身的一个项目。

假设您只希望组1中的名字,组2中的其他名字:


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

假设您只需要组1中的第一个名称,组2中的其余名称:


^(\b[\w]+\b)([\w\w]+)
首先,作为在我的名字中使用标点符号的人:-)请不要使用
\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
当然,如果你在你的数据集中遇到中间名的人,就无法将他们与matronym-patronym对或多部分姓氏区分开来

我希望/假设你的输入中也没有敬语

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
最终,要将一个名字准确地分解为尊称、名字、中间名、姓氏(matronym、patronym)和后缀,唯一的方法就是询问

(例如,我自己的名字,在盎格鲁语圈中,“Fenn”被认为是一个“中间名”,在拉丁语圈中,它被解释为matronym。)

敬语和后缀通常可以从列表中猜到,但例如,军事头衔和博士头衔是一个很长的列表(“Doe博士,Pharm.D”,“Thomas Ts'o少将”),并不明确(例如,“Don”既是“Donald”的缩写,也是敬语)

附言:可爱的文章在这里:

首先,作为一个在我的名字中使用标点符号的人:-)请不要使用
\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
当然,如果你在你的数据集中遇到中间名的人,就无法将他们与matronym-patronym对或多部分姓氏区分开来

我希望/假设你的输入中也没有敬语

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
最终,要将一个名字准确地分解为尊称、名字、中间名、姓氏(matronym、patronym)和后缀,唯一的方法就是询问

(例如,我自己的名字,在盎格鲁语圈中,“Fenn”被认为是一个“中间名”,在拉丁语圈中,它被解释为matronym。)

敬语和后缀通常可以从列表中猜到,但例如,军事头衔和博士头衔是一个很长的列表(“Doe博士,Pharm.D”,“Thomas Ts'o少将”),并不明确(例如,“Don”既是“Donald”的缩写,也是敬语)

附言:可爱的文章在这里:

您能举一个您期望接收的各种输入的例子吗?您能举一个您期望接收的各种输入的例子吗?确认!!你接受了我的回答,然后又拒绝了
X(
Ack!!你接受了我的答案,然后又拒绝了!!
X(