正则表达式匹配中间 name/s

Regex to match middle name/s

假设输入一个包含全名的字符串。全名非常多样化 - 即。 Joe Bloggs、Joe Bloggs-Phillips、Joe Bloggs Phillips、Joe Bloggs Adams Phillips、Joe van den Bloggs、Joe van-der Bloggs。

我想匹配我将要调用的内容 "middle names"。这是第一个和最后一个 space 之间的所有内容。即,如上所述 - "Bloggs Adams"、"van den" 和 "van-der"。带连字符的名字是全姓。这个的正则表达式是什么?

PS。我知道名字的文化多样性,例如。 "van der" 实际上不是中间名,而是姓氏的开头。因此,如果有逻辑可以构建到此正则表达式中以适应,这将有所帮助。否则,我想假设:

非常感谢。

使用这个:

^(\S+)\s+(.*\b)\s+(\S+)$

第一个捕获组是名字,第二组是中间名,第三组是姓氏。