非常に単純なスクリプトパーサーを学校プロジェクトの一部として作成する必要はありませんが、正規表現でのみ行うことができるのは不思議です。Regex、引用符で囲まれているパターンを無視する
構文はASPと似ていますが、スクリプトは<%で始まり%>で終わります。
これはechoまたはResponse.Writeと同じ1つのコマンド "pr"のみをサポートしています。
今私は、スクリプトブロックを見つけるために、この正規表現を使用しています:
(<%\s*([\s\S]*?)\s*%>)
しかし、私はこのようなコマンドがある場合:
<% pr "%>"; %>
を...それは明らかにのみ一致した:
<% pr "%>
引用符内にある終了タグを純正正規表現で無視する方法はありますか?私の主な心配は、引用符の間にあるタグに一致するかもしれないが、実際にはそれらが意味を成すならば、それらのタグの外側にあるかもしれないということです。たとえば...
<% pr "hello world"; %> "
技術的には終了タグは、引用符で囲まれているが、それは他の方法で回避ではなく、「開く」、次に「クローズ」の引用、内部ではありません。
これは正規表現ではきちんとしているはずですが、そうでなければ私はこの機能をサポートしたいと思っていましたが、手作業で入力テキストを繰り返してブロックをパースしなければならないどちらか。
ありがとうございます!
しばらく
あなたの引用符が一致しない場合には、それは不可能です。たとえば、あなたの最後の例を '' <%pr "hello world";%> "'に拡張するべきではありません。引用符の内側にも外側にも '<%' and '%>'はありませんか?あなたの最後の例では、後の '' 'が後で入力にマッチすることを保証できますか? –