代码之家  ›  专栏  ›  技术社区  ›  Murtuza Z

版权字符串搜索和替换问题

  •  -1
  • Murtuza Z  · 技术社区  · 6 年前

    如何编写正则表达式以匹配字符串 Copyright (C) 2017 - 2018,

    这是我的密码,

    import re
    find = 2018
    COPYRIGHT_PATTERN = re.compile(
        r'Copyright (C) \d{4} - {0},'.format(find)
    )
    
    test_str = 'Copyright (C) 2002 - 2018,'
    if COPYRIGHT_PATTERN.match(test_str):
        print('Found match')
    

    但它不起作用。我也要换 2018 具有 2019

    1 回复  |  直到 6 年前
        1
  •  4
  •   Wiktor Stribiżew    6 年前

    您可以按如下方式修复当前代码:

    import re
    find = 2018
    COPYRIGHT_PATTERN = re.compile(
        r'(Copyright \(C\) \d{{4}} - ){0},'.format(find)
    )
    
    test_str = 'Copyright (C) 2002 - 2018,'
    print(COPYRIGHT_PATTERN.sub(r'\g<1>2019', test_str))
    

    Python demo

    细节

    • { } 必须加倍。
    • 这个 ( )
    • 如果要替换,请使用 re.sub 而不是 re.match
    • {0} )
    • \g<X>