グッドデザイン賞を受賞したウォーターサーバー >>

perlでエラーアドレスを抽出したく
いろいろ調べてみましたがどうにもうまくいきません。
主に携帯アドレスが中心ですので
RFCに基づいているというよりは簡易な正規表現で、
重複排除くらいはできると理想なのですが
既成で何かいいものはありませんかね?

$format='[\w.-]+\@([\w-]+\.)+\w+'; # 簡略なメールアドレス正規表現
open(IN, "エラー.dbx");
foreach(<IN>) {
if($_ =~ /($format)/){
push(@emails,$1."\n");
}
}
close(IN);

print @emails;

とか

open(IN, 'エラー.dbx');
@data = <IN>;
close(IN);
foreach(@data){
s/ //g;
print "$_\n" if /([\w._-]+@[\w._-]+)/ ;

}

試してみましたがうまくいきませんでした。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

これでどうかな?



$myaddress='aaa@example.com'; # 自分のアドレス
open(IN, "エラー.dbx");
foreach(<IN>){
 if(/^To: .*?([-+\w.]+\@[-\w.]+\.\w{2,5})(\W|$)/ && $1 ne $myaddress){
  push(@emails,$1."\n");
 }
}
close(IN);
print @emails;
※空白は変えてね!
    • good
    • 0

携帯電話のメールアドレスは、規格外のものもあって難しいです。


参考サイトを紹介しておきますが、一筋縄では行かない。
【参考サイト】
Perlメモ( http://www.din.or.jp/~ohzaki/perl.htm )
→メールアドレスの正規表現 ( http://www.din.or.jp/~ohzaki/perl.htm#Mail )
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPerlでのメール本文の解析について

ここで一週間も止まっています、どなたか助けてください。

あるサーバーにたまっているメールを受信して
Net::POP3;
MIME::Parser;
などを利用して本文を取り出したりしています。

件名などはきちんと解析できて日本語にできるのですが、どうしても本文だけはどうなっているのかわかりません。エンコード、デコードなどの説明が書いてあるサイトをたくさんみて200回くらいいろんな方法やパターンを試してみて本文を復元しようと試みましたが 「$B$^$7$m?'%7%s%U%)%K!<$N%Q%s$K$c(B」の文字は何も変わることなく、さすがに気が狂いそうになりましたのでここで質問しようとおもいます。

emlで保存したファイルから本文を取り出すことはできますが、読める状態になりません。

どなたか教えていただけないでしょうか?

いったい、どうしたらメールの本文をきちんと読める状態にできるのしょう?

=========================
Subject: =?ISO-2022-JP?B?GyRCJF4kNyRtPyclNyVzJVUlKSVLITwbKEI=?=
To: test@test.com
Status: RO
X-UIDL: 1358842469.4950.s323,S=1722
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

$B$^$7$m?'%7%s%U%)%K!<$N%Q%s$K$c(B

ここで一週間も止まっています、どなたか助けてください。

あるサーバーにたまっているメールを受信して
Net::POP3;
MIME::Parser;
などを利用して本文を取り出したりしています。

件名などはきちんと解析できて日本語にできるのですが、どうしても本文だけはどうなっているのかわかりません。エンコード、デコードなどの説明が書いてあるサイトをたくさんみて200回くらいいろんな方法やパターンを試してみて本文を復元しようと試みましたが 「$B$^$7$m?'%7%s%U%)%K!<$N%Q%s$K$c(B」の文字は何も変わること...続きを読む

Aベストアンサー

No1 のお礼にあるプログラムを見る限り JIS でファイルに保存し、異なる環境 (UTF8, Shift_JIS など) で表示しているに過ぎないのではないかと思います。確認方法として、ブラウザを利用することができます。xxx.txt などの名前で保存して、ブラウザで正常に表示されて文字エンコーディングが JIS (ISO-2022-JP) になっている、または文字エンコーディングを JIS (ISO-2022-JP) にしたら正常に表示された、のような現象であれば文字列として壊れてはいません。

文字列を変換するには、Encode モジュールを利用するのが簡単かと思います。なお、'utf8' のところは環境に合わせて変更してください ('shiftjis', 'cp932', 'euc-jp' など)。

use Encode;
...
@$message = map { encode('utf8', decode('jis', $_)) } @$message;


人気Q&Aランキング