如何在python中将正则表达式替换为小写

jar*_*lan 6 python regex

我想搜索关键词(键是动态的)并以某种格式替换它们.例如:这些数据

keys = ["cat", "dog", "mouse"]
text = "Cat dog cat cloud miracle DOG MouSE"
Run Code Online (Sandbox Code Playgroud)

必须转换为

converted_text = "[Cat](cat) [dog](dog) [cat](cat) cloud miracle [DOG](dog) [MouSE](mouse)"
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

keys = "cat|dog|mouse"
p = re.compile(u'\\b(?iu)(?P<name>(%s))\\b' % keys)
converted_text = re.sub(p, '[\g<name>](\g<name>)', text)
Run Code Online (Sandbox Code Playgroud)

这工作正常,只有我不能将最后一个参数转换为小写.这样转换如下:

converted_text = "[Cat](cat) [dog](dog) [cat](cat) cloud miracle [DOG](DOG) [MouSE](MouSE)"
Run Code Online (Sandbox Code Playgroud)

如何将最后一个参数转换为小写?好像python无法编译\ L符号.

Ant*_*sma 10

您可以使用函数进行替换:

pattern = re.compile('|'.join(map(re.escape, keys)), re.IGNORECASE)
def format_term(term):
    return '[%s](%s)' % (term, term.lower())

converted_text = pattern.sub(lambda m: format_term(m.group(0)), text)
Run Code Online (Sandbox Code Playgroud)