Perl5.8.4でテキスト中にメールアドレス、が含まれていたら別の値に変換する処理を行いたいのですが、マッチング(正規表現)の方法を教えて下さい。*別に出会い系サイトを作っているわけではありませんが。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:nankichi No.1

回答回数562ベストアンサー獲得回数2

ポイント7pt

長いですよ。

id:dak

このリソースは先程も見たのですが、正直な所、解決方法が良く分かりません。

$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;

といった形で良いのでしょうか?

2004/12/20 12:41:47
id:ke_ishi No.2

回答回数269ベストアンサー獲得回数0

ポイント18pt

http://www.rescue.ne.jp/CGI-BBS/cgi/perl/20021107172018.shtml

文章中のリンク、メールアドレスを自動的にリンク付けしたい。

こことかどうでしょう

id:dak

$str =~ s/b[-w.]+@[-w.]+.[-w]+b/this is address/g;

コピペしてとしてみたのですが、全くヒットしません。うーん何でだろ。

2004/12/20 12:59:38
id:pmakino No.3

回答回数358ベストアンサー獲得回数30

ポイント25pt

まず参照すべきはこれだと思いますが、凄く長いです…

ので、私は↓のようにしています。

[¥w¥-.]+@[¥w¥-]+(¥.[¥w¥-]+)+

一般的なメアドならこれで十分だと思います。たとえば $str に含まれるメアドをクリッカブルにする処理なら↓のような感じです。

$str =~ s/([¥w¥-.]+@[¥w¥-]+(¥.[¥w¥-]+)+)/<a href=”mailto:$1”>$1<¥/a>/g;

id:dak

皆さんに示して頂いたソースが一部はてなのCGI?で変換されているのか、コピペでは動作しないようですが、幾つか変換して試してみます。回答ありがとうございます。

2004/12/21 01:17:40
id:siachan No.4

回答回数91ベストアンサー獲得回数23

ポイント25pt

$str =~ s/¥b[-¥w.]+@[-¥w.]+¥.[-¥w]+¥b/this is address/g;

¥マークが入ってないんじゃないですか?

id:dak

あ、なる。ありがとうございました。

2004/12/21 01:19:38

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません