私はJSでの小枝/神社テンプレートパーサを構築、およびJavaScriptで以下の文字列を一致させる必要があるんだ:エスケープされた {を次の正規表現に追加するにはどうすればよいですか?
{%render "base"%}
{% render "base" with {"color":"red0xFF0000", "number": 123} %}
RegexBuddyに建てられたとこれまでのところ、私は、以下の正規表現を持っている:
\{% ?render *"[a-z0-9:._]+" ?((?:with +)({([^\{\}]*)}))? ?%}
これは上記の両方のレンダリングタグに一致するように管理しますが、句の本文にエスケープされた\{
と\}
を許可します。
私は今すべてを試しましたが、この100%を稼働させることはできません。私は、例えばそのような中括弧を追加する場合:
{% render "base" with {"color":"red\{0xFF0000\}", "number": 123} %}
それだけでred
過去の最初{
で終了だって文字列が一致していません。
基本的には正規表現を一致させたいが、{
の接頭辞は無視され、\
という接頭辞は無視されます。
アイデア?
なぜあなたは否定先読みを使用しないでください: ''またはオプションのグループ(\\?!): '(\\\})? ' –
私はそれをしようとしていますが、それをどこに入れるのかはわかりません:) –
FWIW、私はここで正規表現を使用しません。適切なトークンごとのパーサーは、より複雑ではなく(おそらくより効率的です)、IMHOです。 – You