[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/05 08:18 / Filesize : 385 KB / Number-of Response : 980
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Proxomitron フィルター作成スレッド Part6



485 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 02:11:39 ID: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でのアスタリスクは賢い上に速度も最速な便利な道具だけど慣れるまでは上記のようなスタンスで取り組んだほうがいい。
高速化チューニングはその後からやってもいいんだから。






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<385KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef