2

这似乎是一个简单的问题,但显然我缺少一些东西。

我有一个 Python 函数,旨在用 HTML 格式的代码替换自定义标记之间出现的代码块:

def subCode(text):
    tags = re.findall('<<<mytag>>>.+?<<</mytag>>>', text, re.S)
    for tag in tags:
        match = re.search('>>>(.+?)<<<', tag, re.S)
        replaced_code = replaceCode(match.group(1))
        text = re.sub(tag, replaced_code, text, re.S|re.M)
    return text

这将匹配标签之间的代码,如下所示:

this is some 
random text
<<<mytag>>>now this
   is some
   random code<<</mytag>>>
and this is text again

但它不是用格式化的替换替换代码,返回的字符串与输入相同。我错过了什么?

4

1 回答 1

4

我认为您想使用将re.sub()函数作为第二个参数的变体,它要简单得多:

def subCode(text):
    return re.sub('<<<mytag>>>(.+?)<<</mytag>>>', replaceFunc, text, flags=re.S)

def replaceFunc(match):
    return replaceCode(match.group(1))

如果 to 的第二个参数re.sub()是一个函数,它将一个匹配对象作为输入,并期望返回替换字符串。

于 2012-11-12T22:23:38.410 回答