Perlを勉強しはじめたばかりのころ、正規表現については苦手で、避けて通っていた。 だがProgramming Perlの「Pattern Matching」を読んでからというもの、今ではPerlでも一番面白いところだと思えるようになった。 とは言うものの、英語と一緒で読むのは簡単でもいざ自分で書こうとなると、なかなか難しいのではないかと思う。 それですごくくだらないものなのだが、Perlの正規表現の練習用(または自分が書いた正規表現の確認用)のスクリプトを作ってみた。 こちらです。 たとえばPattern for matchingに (?:(?<=[^"=>])|^)(http:\/\/[\w.~\-\/?&+=#]+) と記入した場合、String for matchingに http://www.t-okada.com/cgi/ を入れると「Good!」になりますが http://www.t-okada.com/cgi/ または <A HREF="http://www.t-okada.com/cgi/"> を入れると「Didn't Match!」になります。 これはいわゆるオートリンクのための正規表現のつもりです。Aタグを使った場合以外にのみURLがオートリンクされると思いますが、間違いがありましたらどうぞご指摘下さいませ。
なお上記ですが (?:(?<=[^"=])|^)(http:\/\/[\w.~\-\/?&+=#]+) にすると http://www.t-okada.com/cgi/ にはマッチしてしまいます。
※このスクリプトは(こんなもの実際に使う人いないかもしれませんが、)誰でも入力出来るような形で公開すると、もしかしてとんでもないことになるかもしれないので、もしも使うのならローカルで使用して下さいね。
追記: そう言えばオートリンクの正規表現については前にもこの日記で書いた覚えがあり、同じ事ばかり言っていてすみません。 ところで上記の正規表現ちょっと直しました。文字クラスの中では\はいらないのでこれも取ってみましたが、-の前の\を取るとなぜかエラーに。文字クラスの中では-は特別な意味があることを忘れていました。
|
2002年01月28日(月)
No.14
|
|