不确定如何解决这个问题,我已经尝试了很久了。我有一大堆名字,有些名字的格式与其他名字不同,一个特别的例子是这样说:
John David Smith or John Smith
现在,在可能的情况下,我希望Regex返回两个匹配,一个包含名字(如果存在,还包含中间名),另一个包含姓氏。目前我使用的是:
(^\w+)|(\w+$)
它工作得很好,除了它省略了中间名(如果有的话)。
我意识到我可以很容易地在.net中拆分名称并以这种方式阅读它,但是使用正则表达式有一个非常好的理由,它将在我的项目中发挥更大的作用。
谢谢
发布于 2018-06-08 07:27:16
这将返回两个结果。一个将是名字和中间名(如果存在),第二个将是姓氏。
^(.*?)\s([^\s]*)$
"John Smith“将返回"John”和" Smith“,而"John David Smith”将返回"John David“和"Smith”。这是在假设名称不包含空格,但任何其他字符都应该可以。
在收集这样的信息时,您应该尽可能将它们分开收集。当您考虑姓氏时,这不是一个完美的解决方案,因为姓氏中可能包括"van der“和其他可能性。正则表达式无法区分中间名是两个单词,还是姓氏是两个单词。
https://stackoverflow.com/questions/50750190
复制相似问题