メールアドレスをリンク形式に置換する正規表現(簡易版)

※正式なメールアドレスの正規表現こちらを参照
http://www.din.or.jp/~ohzaki/perl.htm#Mail

メールアドレス置換プログラム

# ex70.pl
undef $/;      # テキストファイルを一気に読み込みます
$text = <>;    # 引数のファイルを読み込みます
$text =~ s{
  \b
  # アドレスを$1変数に格納する
  (
    \w[-.\w+]*      # + はgmailとかで使用するので追加した
    \@              # @ はエスケープが必要
    [-a-z0-9]+
    (\.[-a-z0-9]+)* # _ はホスト名として許可されない
    \.(com|edu|gov|int|mil|net|org|biz|info|name|museum|coop|aero|[a-z][a-z])
  )
  \b
}{<a href="mailto:$1">$1</a>}gix; # x を指定する事により、上記のような記述が可能

print $text;

置換データ

# ex70.txt
this is test...
test1 test@test.jp
test2 test@test.jp<h1>test</h1>
test@test.com
<h1>test@test.com</h1>

実行結果

 perl -w ex70.pl ex70.txt 
# ex70.txt
this is test...
test1 <a href="mailto:test@test.jp">test@test.jp</a>
test2 <a href="mailto:test@test.jp">test@test.jp</a><h1>test</h1>
<a href="mailto:test@test.com">test@test.com</a>
<h1><a href="mailto:test@test.com">test@test.com</a></h1>

詳説 正規表現 第2版

詳説 正規表現 第2版