http://www.rescue.ne.jp/CGI-BBS/cgi/perl/20021107172018.shtml
文章中のリンク、メールアドレスを自動的にリンク付けしたい。
こことかどうでしょう
$str =~ s/b[-w.]+@[-w.]+.[-w]+b/this is address/g;
コピペしてとしてみたのですが、全くヒットしません。うーん何でだろ。
まず参照すべきはこれだと思いますが、凄く長いです…
ので、私は↓のようにしています。
[¥w¥-.]+@[¥w¥-]+(¥.[¥w¥-]+)+
一般的なメアドならこれで十分だと思います。たとえば $str に含まれるメアドをクリッカブルにする処理なら↓のような感じです。
$str =~ s/([¥w¥-.]+@[¥w¥-]+(¥.[¥w¥-]+)+)/<a href=”mailto:$1”>$1<¥/a>/g;
皆さんに示して頂いたソースが一部はてなのCGI?で変換されているのか、コピペでは動作しないようですが、幾つか変換して試してみます。回答ありがとうございます。
$str =~ s/¥b[-¥w.]+@[-¥w.]+¥.[-¥w]+¥b/this is address/g;
¥マークが入ってないんじゃないですか?
あ、なる。ありがとうございました。
このリソースは先程も見たのですが、正直な所、解決方法が良く分かりません。
$mail_regex =
q{(?:[^(¥040)<>@,;:”.¥¥¥¥¥[¥]¥000-¥037¥x80-¥xff]+(?![^(¥040)<>@,;:”.¥¥¥¥} .
q{¥[¥]¥000-¥037¥x80-¥xff])|”[^¥¥¥¥¥x80-¥xff¥n¥015”]*(?:¥¥¥¥[^¥x80-¥xff][} .
q{^¥¥¥¥¥x80-¥xff¥n¥015”]*)*”)(?:¥.(?:[^(¥040)<>@,;:”.¥¥¥¥¥[¥]¥000-¥037¥x} .
q{80-¥xff]+(?![^(¥040)<>@,;:”.¥¥¥¥¥[¥]¥000-¥037¥x80-¥xff])|”[^¥¥¥¥¥x80-} .
q{¥xff¥n¥015”]*(?:¥¥¥¥[^¥x80-¥xff][^¥¥¥¥¥x80-¥xff¥n¥015”]*)*”))*@(?:[^(} .
q{¥040)<>@,;:”.¥¥¥¥¥[¥]¥000-¥037¥x80-¥xff]+(?![^(¥040)<>@,;:”.¥¥¥¥¥[¥]¥0} .
q{00-¥037¥x80-¥xff])|¥[(?:[^¥¥¥¥¥x80-¥xff¥n¥015¥[¥]]|¥¥¥¥[^¥x80-¥xff])*} .
q{¥])(?:¥.(?:[^(¥040)<>@,;:”.¥¥¥¥¥[¥]¥000-¥037¥x80-¥xff]+(?![^(¥040)<>@,} .
q{;:”.¥¥¥¥¥[¥]¥000-¥037¥x80-¥xff])|¥[(?:[^¥¥¥¥¥x80-¥xff¥n¥015¥[¥]]|¥¥¥¥[} .
q{^¥x80-¥xff])*¥]))*};
$str =~ s/$mail_regex/¥”this is email-address¥.¥”/g;
といった形で良いのでしょうか?