1

次のようなmakoテンプレートがあります。

% if staff:
    <!-- begin staff -->
    ...
    <!-- end staff -->
% endif

そうすれば、staff変数をTrueとして渡すと、それらのコメントが表示されます。次のような正規表現を使用してこれをテストしようとしています。

re.search('<!-- begin staff -->.*<!-- end staff -->', text)

コメントがHTML出力に表示されることを確認しましたが、正規表現が一致しません。<!-- begin staff -->コメント(と<!-- end staff -->)をre.escapeに入れてみましたが、それでもうまくいきません。私は何が間違っているのですか?

または、このテストを実行するためのより良い方法はありますか?

4

2 に答える 2

9

デフォルトで.は改行と一致しません-re.DOTALLオプションを追加する必要があります。

re.search('<!-- begin staff -->.*<!-- end staff -->', text, re.DOTALL)

複数のスタッフセクションがある場合は、試合を貪欲にしないこともできます。

re.search('<!-- begin staff -->.*?<!-- end staff -->', text, re.DOTALL)
于 2009-04-16T16:21:01.017 に答える
2

代わりに、 HTMLParserのようなHTMLパーサーを使用してください。正規表現を使用してXMLとHTMLを解析するのが難しい理由の例をいくつか挙げてください。を参照してください。理由のために。

于 2009-04-16T16:22:47.237 に答える