正则表达式匹配中间 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" 实际上不是中间名,而是姓氏的开头。因此,如果有逻辑可以构建到此正则表达式中以适应,这将有所帮助。否则,我想假设:
- 名字 - 直到第一个 space。
- 中间名 - 从名字 space 到最后 space。
- 姓氏 - 从词尾 space 到末尾。
非常感谢。
使用这个:
^(\S+)\s+(.*\b)\s+(\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" 实际上不是中间名,而是姓氏的开头。因此,如果有逻辑可以构建到此正则表达式中以适应,这将有所帮助。否则,我想假设:
- 名字 - 直到第一个 space。
- 中间名 - 从名字 space 到最后 space。
- 姓氏 - 从词尾 space 到末尾。
非常感谢。
使用这个:
^(\S+)\s+(.*\b)\s+(\S+)$
第一个捕获组是名字,第二组是中间名,第三组是姓氏。