正则表达式将名称拆分为forename / middle name和surname

时间:2018-06-07 21:09:00

标签: regex

不确定如何处理这个问题,现在已经试图解决这个问题。我有一大堆名字,有些会以不同的格式出现在其他人身上,其中一个例子就是说:

John David Smith John Smith

现在我希望Regex能够撤回两个包含forename(和中间名,如果它存在)并且另一个包含姓氏的匹配项。目前我正在使用:

(^\w+)|(\w+$)

除了中间名(如果有的话)之外,它的工作正常。

我意识到我可以轻松地将.net中的名称拆分并以这种方式阅读,但是使用正则表达式的一个非常好的理由将会在我的项目中进一步发挥作用。

由于

1 个答案:

答案 0 :(得分:0)

这将返回两个结果。一个将是第一个和中间名称,如果它存在,第二个将是姓氏。

^(.*?)\s([^\s]*)$
“John Smith”将返回“John”和“Smith”,而“John David Smith”将返回“John David”和“Smith”。这就是假设名称不包含空格,但任何其他字符应该没问题。

收集此类信息时,应尽可能单独收集。当您考虑可能包括“范德”和其他可能性的姓氏时,这不是一个完美的解决方案。正则表达式无法判断中间名是两个单词,还是姓氏是。