【发布时间】:2018-06-08 07:27:15
【问题描述】:
不确定如何解决这个问题,多年来一直在尝试解决这个问题。我有一大堆名字,有些名字的格式与其他人不同,特别是一个例子:
约翰·大卫·史密斯或约翰·史密斯
现在,在可能的情况下,我希望 Regex 拉回两个匹配项,一个包含名字(如果存在,还有中间名),另一个包含姓氏。目前我正在使用:
(^\w+)|(\w+$)
这很好用,只是它会遗漏中间名(如果有的话)。
我意识到我可以很容易地在 .net 中拆分名称并以这种方式阅读它,但是使用正则表达式有一个很好的理由,它将在我的项目中进一步发挥作用。
谢谢
【问题讨论】:
-
使用
^(\w+)(?: (\w+))? (\w+)$并抓住第 2 组的中间那个。 -
([A-Za-z]+),\\s*([A-Za-z]+)\\s*([A-Za-z]+)
-
\w和[A-Za-z](由 Marker 建议)都不会匹配我朋友的名字Đuro或他的朋友Ćiro -
@RokoC.Buljan Have you tried before commenting? 这也符合我的名字,Виктор。
标签: regex