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