C#中用于包含内部空间的姓氏的正则表达式

Cav*_*rob 5 c# regex spaces

我想要一个C#的正则表达式,匹配"Johnson","Del Sol"或"Del La Range"; 换句话说,它应该匹配中间空格但在开头或结尾没有空格的单词.

Dan*_*ant 5

^\p{L}+(\s+\p{L}+)*$
Run Code Online (Sandbox Code Playgroud)

此正则表达式具有以下功能:

  • 将匹配一个字母的姓氏(例如Malcolm X的姓氏)
  • 与包含数字的姓氏不匹配(例如任何带有\w或遗嘱的名字[^ ])
  • 匹配unicode字母

但是像"奥康纳"这样的姓氏或带有连字号的姓氏......嗯......


Pau*_*oub 0

这 ?预选赛是你的朋友。进行尽可能短的匹配而不是贪婪的匹配。将其用作名字,如下所示:

^(.+?) (.+)$
Run Code Online (Sandbox Code Playgroud)

第 1 组获取第一个空间之前的所有内容,第 2 组获取其余部分。

当然,现在如果名字包含空格怎么办?