【问题标题】:How to match person name and surname separately using Regex?如何使用正则表达式分别匹配人名和姓氏?
【发布时间】:2017-05-19 16:02:18
【问题描述】:

我正在尝试使用 RegEx 事件从字符串中获取姓名和姓氏,有两个名称。模式的名字和姓氏必须有两组。

我尝试了以下模式,但它得到了我想要删除的最后一个空间,但我做不到。如何正确获取姓名和姓氏?

我尝试了什么:

^([A-Za-z]+ )+

结果:

【问题讨论】:

  • 尝试使用^([A-Za-z ]+) ([A-Za-z]+)$
  • 程序如何知道姓名的哪些部分是姓氏的一部分,哪些部分是给定的?如果这个人甚至没有姓氏怎么办?
  • 如果这个人的名字中包含 A-Z 以外的其他字符怎么办?
  • 如果你有en.wikipedia.org/wiki/Akon呢? Damala Badara Akon Thiam 是姓氏吗?

标签: regex


【解决方案1】:

如果您真的只是对获取前两个名称感兴趣,那么重复捕获组并在中间留一个未捕获的空格并没有错。

^([A-Za-z]+) ([A-Za-z]+)+

或者,补充@Wiktor Stribiżew 在开头排除空格的答案,您可以这样做:

^\s*([A-Za-z ]+) ([A-Za-z]+)$

【讨论】:

    【解决方案2】:

    试试这个(.*?)\s([\w-]+)$

    第 1 组:名称

    第 2 组:姓氏

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 2010-10-14
      • 1970-01-01
      • 2016-01-01
      • 2011-06-10
      相关资源
      最近更新 更多