私のテンプレートエンジンは翻訳します
"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`
この文字列はラムダに挿入され、結果コード文字列が評価されています。
return eval("lambda tpl_args: %s" % modified_template_string)
ラムダは後でプログラムで呼び出され、いくつかの tpl_args を使用して結果文字列を生成します。