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

时间:2018-12-19 13:26:37

标签: python regex

如何编写用于匹配字符串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 个答案:

答案 0 :(得分:4)

您可以这样修改当前代码:

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>