我的模板引擎翻译
"some data #{substitution_expression} some other data"
到
"some data" + (substitution_expression) + "some other data"
但如果“某些数据”或“其他一些数据”内部会有双引号,则评估失败。 我必须在这些引号之前添加斜杠,但我无法为它提出正确的正则表达式。
任何帮助?
更新:
这是模板引擎的工作方式:
它获取模板字符串,例如
template = 'template string "quoted text" #{expression}'
它通过简单的正则表达式将模板字符串更改为:
template = '"%s"' % re.compile(r'\#{(.*)}').match(r'" + (\1) + "', template)
# template == "template string "quoted text"" + (expression) + ""
# here is a problem with a "quoted text" - it needs \ before quotes`
此字符串正在插入lambda,结果代码字符串被逐出:
return eval("lambda tpl_args: %s" % modified_template_string)
稍后在程序中调用lambda,并使用一些tpl_args生成结果字符串。
答案 0 :(得分:1)
您是否尝试过re.DOTALL标志?
re.compile(r'\#{(.*)}', re.DOTALL)