gpt4 book ai didi

regex - 是否有一种简单的方法可以在 Notepad++ 中使用 RegEx 区分姓氏和名字

转载 作者:行者123 更新时间:2023-12-04 09:32:00 25 4
gpt4 key购买 nike

我有 20,000 多条记录要处理,但是像下面这样的多次传递就可以了,当然除非所有这些都可以在一个 super 高效的正则表达式中完成? 🤔
样本记录:

ABBEY Chantelle - 08.11.1995 - A

ANAND Toni-Grace - 04.09.1999 - A

ADCOCK ALVEY James - 12.04.1992 - C

ADLINGTON-JONES Robin Jacob Sebastian - 15.02.1999 - B

AFZAL Kiera - 25.04.2000 - B

AHMED Nisar Abu Ben Adhem - 16.08.2002 - C

AIRE-DEANE Christopher-James - 06.01.1997 - B

AL-MISRI Yaqoob - 23.07.2004 - C

ASTER Lily-May - 01.04.2010 - B

McQUEEN Stephen - 02.02.2001 - A


期望的输出:

ABBEY¬Chantelle¬08.11.1995¬A

ANAND¬Toni-Grace¬04.09.1999¬A

ADCOCK ALVEY¬James¬12.04.1992¬C

ADLINGTON-JONES¬Robin¬Jacob¬Sebastian¬15.02.1999¬B

AFZAL¬Kiera¬25.04.2000¬B

AHMED¬Nisar¬Abu¬Adhem¬16.08.2002¬C

AIRE-DEANE¬Christopher-James¬06.01.1997¬B

AL-MISRI¬Yaqoob¬23.07.2004¬C

ASTER¬Lily-May¬01.04.2010¬B

McQUEEN Stephen¬02.02.2001¬A


第一关:
  • 查找:^([AZ]{2,20}-[AZ]{2,20}) ([A-Za-z]{1,20}) - ([0-9]{2}.[0- 9]{2}.[0-9]{4}) - ([A|B|C])$
  • 正则表达式:\1¬\2¬\3¬\4
  • 结果:

    AL-MISRI¬Yaqoob¬23.07.2004¬C



  • 第二关:
  • 查找:^([AZ]{2,20}) ([A-Za-z]{1,20}) - ([0-9]{2}.[0-9]{2}.[0- 9]{4}) - ([A|B|C])$
  • 正则表达式:\1¬\2¬\3¬\4
  • 结果:

    ABBEY¬Chantelle¬08.11.1995¬A

    AFZAL¬Kiera¬25.04.2000¬B

    McQUEEN Stephen¬02.02.2001¬A



  • 第三关:
  • 查找:^([AZ]{2,20}) ([A-Za-z]{1,20}-[A-Za-z]{1,20}) - ([0-9]{2} .[0-9]{2}.[0-9]{4}) - ([A|B|C])$
  • 正则表达式:\1¬\2¬\3¬\4
  • 结果:

    ANAND¬Toni-Grace¬04.09.1999¬A

    ASTER¬Lily-May¬01.04.2010¬B



  • 第四关:
  • 查找:^([AZ]{2,20}-[AZ]{2,20}) ([A-Za-z]{1,20}-[A-Za-z]{1,20}) - ([0-9]{2}.[0-9]{2}.[0-9]{4}) - ([A|B|C])$
  • 正则表达式:\1¬\2¬\3¬\4
  • 结果:

    AIRE-DEANE¬Christopher-James¬06.01.1997¬B



  • 但是上面的正则表达式无法解释这些记录😢

    ADCOCK ALVEY James - 12.04.1992 - C

    ADLINGTON-JONES Robin Jacob Sebastian - 15.02.1999 - B

    AHMED Nisar Abu Ben Adhem - 16.08.2002 - C


    笔记:
    所有姓氏首先出现 [IN CAPITALS] 有些可能被连字符,名字(第二和其他中间)在标题案例中紧随其后,也可以被连字符
    在搜索和替换事件期间,在 Notepad++ 中启用匹配大小写。所有名字都没有撇号(例如 O'KEEFE),它们都被删除了
    即使可以对名称进行排序,我也可以分别处理日期和后缀,任何帮助将不胜感激,因为我仍然是 RegEx 的新手
    如果我错过了现有的解决方案,我也提前道歉,以防万一我在本网站上搜索时没有选择正确的标签或术语
    我已经检查了这篇文章;但是,它没有帮助解决我的查询: Regular expression for first and last name

    最佳答案

    由于所有的可能性,匹配名称并不是那么容易,但是对于给定的示例数据,您可以使用带有 \G 的模式。选择空格和 - ¬ 替换它们之间的部分
    使用 (?-i)或勾选 火柴盒复选标记。

    (?-i)(?:^(?:Mc)?[A-Z]+(?:[ -][A-Z]+)*|\G(?!^)[A-Z][a-z]+(?:-[A-Z][a-z]+)*|\d{2}\.\d{2}\.\d{4})\K -?\h*
    Regex demo
    enter image description here

    关于regex - 是否有一种简单的方法可以在 Notepad++ 中使用 RegEx 区分姓氏和名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62797260/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com