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



如何编写正则表达式来匹配字符串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')

但它不起作用。我还想用2019替换2018

您可以像这样修复当前代码:

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演示

详细信息

  • 在格式化字符串中,文字{}必须加倍
  • 必须在正则表达式中转义()字符以匹配文字括号
  • 如果要替换,请使用re.sub而不是re.match
  • 要进行匹配并保留匹配的一部分,请使用捕获组(请参阅我在{0}开头和前面添加的未带括号(
  • 要替换为后引用和数字,建议使用明确的后引用,g<X>

最新更新