【问题标题】:Inverse of this regex expression此正则表达式的逆
【发布时间】:2021-11-25 02:11:42
【问题描述】:

我有一个清单:

50 - David Herd (1961-1968)
49 - Teddy Sheringham (1997-2001)
48 - George Wall (1906-1915)
47 - Stan Pearson (1935-1954)
46 - Harry Gregg (1957-1966)
45 - Paddy Crerand (1963-1971)
44 - Jaap Stam (1998-2001)
43 - Paul Ince (1989-1995)
42 - Dwight Yorke (1998-2002)

我想选择除了名字和姓氏之间的空格之外的所有字符,以便删除它们并只留下名字、空格和姓氏。

到目前为止,我可以选择名字、空格和姓氏:

([[a-zA-Z]+\s[a-zA-Z]+)

但我不确定如何“反转”这个表达式。任何指针将不胜感激。

【问题讨论】:

    标签: regex-negation


    【解决方案1】:

    如果您可以选择正则表达式替换,您可以在正则表达式模式下尝试以下操作:

    Find:    \d+ - (\w+(?: \w+)+) \(\d{4}-\d{4}\)
    Replace: $1
    

    Demo

    【讨论】:

    • 我不认为那是你要附加的链接,只是说 JSON 说 "Your regex has been deleted."
    • @JoeLissner 我现在正在使用手机,链接有时似乎无法正确复制。我已经修好了(我想)。
    【解决方案2】:

    一个选项是匹配包围的数据,并捕获名字空间姓氏。

    在替换中使用捕获组。

    ^.*?\b([a-zA-Z]+\s[a-zA-Z]+)\b.*
    

    Regex demo

    【讨论】:

    • 非常感谢大家。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 2019-11-01
    • 1970-01-01
    相关资源
    最近更新 更多