Python单个状态下的多正则表达式匹配

2024-10-01 02:38:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大Python字符串,如下所示。在

large_string = "The MIT License (MIT)\n\nCopyright (c) [year] [fullname]\n\nPermission is hereby granted, free of charge, to any person obtaining a ...."

我想用当前年份替换字符串中的“[year]”,用用户提供的名称替换“[fullname]”。我使用python中的re库来完成这个任务。在

^{pr2}$

但我认为这不合适。我以前从未真正使用过regex匹配,但我认为应该有一种更像python的方法来组合这两者re.sub公司声明。在


Tags: the字符串refreestringislicensemit
2条回答

如果只使用两个正则表达式而不是一个正则表达式,那么任务就简单得多。在

如果将它们组合成一个,则会使其更加脆弱(即依赖于两个事物的顺序),正则表达式需要更复杂。在

你可以这样做:

large_string = re.sub('\[year\](.*?)\[fullname\]', str(year) + '\g<1>' + name, large_string)

不过,问问自己哪一个更容易阅读。我建议你选择这个选项。在

如果确保重写字符串以使用{year}{fullname},则可以使用^{}方法填充它们:

from datetime import datetime

def pattern_replace(large_string, name):
    return large_string.format(
        year=datetime.now().year,
        name=name,
    )

相关问题 更多 >