私はpython-markdownの拡張機能を書いています。これは、私のいくつかのカスタムタグ内のテキストをスタイル付きのdivに入れることになっています。
一致した式を div タグにカプセル化する単純なインライン パターン クラスを作成しました。私の正規表現は次のとおりです。これは、コンパイル時に markdown.inlinepatterns.Pattern クラスによって---r'(\{mytag_start\})(.+)(\{mytag_end\})'
内部に配置されるため、コンパイル メソッドは として呼び出されます。"^(.*?)
(.*?)$"
re.compile("^(.*?)%s(.*?)$" %r'(\{mytag_start\})(.+)(\{mytag_end\})')
一見、これでうまくいくように見えますが、すべての改行を<br>
タグとしてハードコーディングする必要があることに気付きました。
そう
{mytag_start}This code<br>
will work{mytag_end}
ただし、次のコードはマークダウン全体を壊します
{mytag_start}This code
will not{mytag_end}
代わりに、上記のブロック全体を未処理のプレーンテキストで取得します。
re.MULTILINE と re.DOTALL を に供給しようとしましたre.compile
が、役に立ちませんでした。何か案は?
編集: これは、前述の問題を示すサンプル拡張ファイルです。次に、を使用して拡張機能を django テンプレートにロードし{{ content:"mdx_MyExtension"}}
ます。