■■■■Proxomitron入門スレッド■■■■5at PCQA
■■■■Proxomitron入門スレッド■■■■5 - 暇つぶし2ch530:think
06/05/09 02:06:32
>517-518,527-528
検証お疲れ様です。
こちらでも追っかけていますが、的確な検証は難しいですね。
とりあえず、>517のソースでは開始タグと同じ数だけ終了タグを入れてやれば、期待通りに動作します。
ワイルドカード最長マッチ説があるようですが、私には $NEST の方に問題があるように思えます。

例えば、<a\s*> なら期待通りに動作しますが、<a\s*><br> では誤爆する危険性がありますよね?
それと同じ事が起こっているんじゃないでしょうか。
$NEST(<a\s*>,</a>) と書くと、start match はいかにも制限された領域にあるように思えますが、
ワイルドカードにとっては見るべき後ろの文字列がある可能性があります。

Match = "$NEST((<title>)\#,\#,(</title>)\#)"
Replace = "\@"

上のようなフィルタでテストすると解りますが、$NESTは start match, end match, inner match の順に検索します。
従って、$NEST(<a\s*>,</a>) でワイルドカードが start match の最後の文字である > の次に見る文字列は
end match にある </a> ではないかと思えるのです。
もちろん、単なる仮説に過ぎませんし、それがどのように関係しているのかは想像がつきませんが…。

> どうやら(<a\s*>)+と同じような挙動をするみたいです。
これには少し疑問が残ります。
<a href=1><test><a href=2></a> のソースを>518のフィルタでテストすると、
<a href=1><test><a href=2> まで消費されますが、(<a\s*>)+ では <a href=1> までしか消費されません。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch