したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

テストその2

67 ◆/vmukiyuzw:2006/08/29(火) 00:46:39
http://yy14.kakiko.com/test/read.cgi/mirror/1114936246/757-758
以下ほとんど独り言なのでこちらに書きます

> s#<a href="read.php?host=[^>]+?>(\d+)</a>#$1#g
「[^>]+?>」は多分単に「.+?>」でいけるはずです

何故こんな細かいとこに言及するかというと、まあsedやawkしかない
時代から正規表現と付き合ってきたというのがあって、perlの正規表現
(という言い方も正確なのかどうかわからない。正規表現の種類にバージョン
番号とかあればいいんですが)にはsedやawkにはない最短一致というのが
あるというのを知って、これは便利だと思ったわけです。
(昔の正規表現には最長一致しかなかった)
# ちなみに、最長一致というのは文字列を検索していってマッチする一番遠い
# ところを探す、最短一致は逆に一番近いところを探す、てな意味です

何が便利かって、まさにHTML文書を検索するようなケースで、HTMLってのは
基本的にはタグが「<」と「>」のペアで出てくるので、「<」が出てきたら次の「>」
までを検索したいケースが多いと思うのです。でも正規表現のデフォルトだと
最長一致になってしまうので、まさに上で書いたような「[^>]*>」(意味的には
一番近い「>」を探す)みたいな書き方を多用せざるを得なくなるのです。
そういう意味で最短一致「.*?」とか「.+?」みたいな書き方が出来るのは非常に
便利だしわかりやすくもあるので使える局面なら是非使うべきだと思うわけです。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板