正则表达式:匹配引号,不是替代

时间:2012-10-10 17:03:28

标签: python regex

我的模板引擎翻译

"some data #{substitution_expression} some other data"

"some data" + (substitution_expression) + "some other data"

但如果“某些数据”或“其他一些数据”内部会有双引号,则评估失败。 我必须在这些引号之前添加斜杠,但我无法为它提出正确的正则表达式。

任何帮助?

更新:

这是模板引擎的工作方式:

  1. 它获取模板字符串,例如

    template = 'template string "quoted text" #{expression}'
    
  2. 它通过简单的正则表达式将模板字符串更改为:

    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`
    
  3. 此字符串正在插入lambda,结果代码字符串被逐出:

    return eval("lambda tpl_args: %s" % modified_template_string)
    
  4. 稍后在程序中调用lambda,并使用一些tpl_args生成结果字符串。

1 个答案:

答案 0 :(得分:1)

您是否尝试过re.DOTALL标志?

re.compile(r'\#{(.*)}', re.DOTALL)