Proxomitron フィルタ ..
485:名無しさん@お腹いっぱい。
07/03/09 02:11:39 3Cl7ivfL0
自分で考えてフィルタを作りたいならもう少しプログラミング(論理学でもいい)の基礎を勉強したほうがいいよ。
もしくはほかの人がこれまでに書いてきたものを読んで理解したほうがいい。
例えば <a(rea|)>...</a(rea|)> としたんじゃ
<a>...</area> にも <area>....</a> にもマッチするし、たぶんそれは意図していないマッチングだろう。
もう一つだけど最初のうちはアスタリスクを乱用しないほうがいい。
初心者にとってのアスタリスクというのはおそらく面倒なことをブラックボックスに詰め込んでどっかにやるためのツールなんだろうけど
それじゃ何も上達しないし理解もすすまないだろう。
>(*href=$AV(\1)*|)&(*title=$AV(\2)*|)
これなんかはアスタリスク乱用の好例だね。
やりたいことはhrefがあればその属性値を\1に代入し、titleがあればその属性値を\2に代入する、ということなんだろうけど
hrefとtitle以外の属性値をすべて無視してしまえば、もっとシンプルな場合わけができるはずだ。
<a>, <a href>, <a href title>, <a title>, <a title href> というように。
あとはこのスペースを[^>]++で置き換えてやればhrefとtitle以外の属性値を上手に無視することができる。
例えばこうなる。
<a\s ([^>]++href=$AV(*)([^>]++title=$AV(*)|)[^>]+>|[^>]++title=$AV(*)([^>]++href=$AV(*)|)[^>]+>|[^>]+>)
#これは<a>にはマッチしないけど、現実的にはそれでも問題はないだろう。
>(*href=$AV(\1)*|)&(*title=$AV(\2)*|)
は初心者の好むブラックボックス化で
><a\s ([^>]++href=$AV(*)([^>]++title=$AV(*)|)[^>]+>|[^>]++title=$AV(*)([^>]++href=$AV(*)|)[^>]+>|[^>]+>)
は論理的思考にある程度慣れた人が好むブラックボックス化だと考えてくれてもいいと思う。(優劣の問題にあらず)
論理学的には中身はまったく一緒だけどよりシンプルでより破綻しづらいのは後者。 { (A|B)&(C|D) = (AC|AD|BC|BD) }
Proxomitronでのアスタリスクは賢い上に速度も最速な便利な道具だけど慣れるまでは上記のようなスタンスで取り組んだほうがいい。
高速化チューニングはその後からやってもいいんだから。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4335日前に更新/385 KB
担当:undef