Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Regexp:匹配不替换的引号_Python_Regex - Fatal编程技术网

Python Regexp:匹配不替换的引号

Python Regexp:匹配不替换的引号,python,regex,Python,Regex,我的模板引擎翻译 "some data #{substitution_expression} some other data" 进入 但如果“某些数据”或“某些其他数据”中包含双引号,则评估失败。 我必须在这些引号之前添加斜杠,但我无法找到正确的正则表达式 有什么帮助吗 更新: 以下是模板引擎的工作方式: 它获取一个模板字符串,例如 template = 'template string "quoted text" #{expression}' 它通过简单的regexp将模板字符串更改为:

我的模板引擎翻译

"some data #{substitution_expression} some other data"
进入

但如果“某些数据”或“某些其他数据”中包含双引号,则评估失败。 我必须在这些引号之前添加斜杠,但我无法找到正确的正则表达式

有什么帮助吗

更新:

以下是模板引擎的工作方式:

  • 它获取一个模板字符串,例如

    template = 'template string "quoted text" #{expression}'
    
  • 它通过简单的regexp将模板字符串更改为:

    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)
    
  • 稍后程序将使用一些tpl_参数调用lambda以生成结果字符串


  • 你试过re.DOTALL标志吗

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

    你试过re.DOTALL标志吗

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

    我不明白这个问题。你能用描述什么不起作用的方式来描述什么不起作用吗?您拥有的字符串是什么?您希望匹配什么?您应该进一步了解模板引擎的工作原理。如果可能的话,可能会给我们展示更多的代码。你现在使用的代码是什么?听起来你并不需要正则表达式,只需要一个字符串替换函数:“with \”-这取决于你使用的语言。Ashwini,不。这是纯Python。我不理解这个问题。你能用描述什么不起作用的方式来描述什么不起作用吗?您拥有的字符串是什么?您希望匹配什么?您应该进一步了解模板引擎的工作原理。如果可能的话,可能会给我们展示更多的代码。你现在使用的代码是什么?听起来你不需要正则表达式,只需要一个字符串替换函数:“with\”-这取决于你使用的语言。Ashwini,不。这是纯Python。