メールアドレスを抜き出す

文章からメールアドレス(と思われる個所)を抜き出し、カンマ区切りでメールアドレスのリストを作ってみます。

まずはメールアドレスを検索してみます。

少し長くなりますが、これで大抵メールアドレスぽいものはマッチするでしょう。

置換前サンプル
ぼくのアドレスは boku@dearie.jp だけど、きみの
アドレスは ki-mi@dearie.jp だったかい、ベッキー?
Noooooo!!いいえジョニー、わたしのアドレスは 
wa.ta.si01@becky.dearie.jp もしくは wa.ta.si02@becky.dearie.jp よ。
becky@dearie.jp なんかでは、決してないわ。
さて、ここからメールアドレス以外の部分は削除して、メールアドレスだけにしたいと思います。

検索:
置換:

メールアドレスの前後を削除してしまおう、とやってみると残念な結果に。
 置換後
boku@dearie.jp,ki-mi@dearie.jp,Noooooo!!いいえジョニー、わたしのアドレスは 
2@becky.dearie.jp,y@dearie.jp,
メールアドレスのない行は残り、同じ行に複数メールアドレスがあると、肝心のメールアドレスもおかしい。

必要な部分の検索はできているので、あとはヒットしていないところを削除できれば簡単なのですが、、、検索結果の反転なんて機能はありませんか?ありませんね?
出来そうで、出来ない・・・

ということで、マクロに逃げる前に発想を変えます。
2回、3回に分けてもいいので、なんとか結果にたどり着きましょう。

1.メールアドレスの前後に改行を挿入

ちゃんとメールアドレスはヒットしているので、その前後に改行を入れて、
「メールアドレスだけ」な行を作ります。

検索:
置換」

 置換後
ぼくのアドレスは 
boku@dearie.jp
 だけど、きみの
アドレスは 
ki-mi@dearie.jp
 だったかい、ベッキー?
Noooooo!!いいえジョニー、わたしのアドレスは 

wa.ta.si01@becky.dearie.jp
 もしくは 
wa.ta.si02@becky.dearie.jp
 よ。

becky@dearie.jp
 なんかでは、決してないわ。

2.メールアドレスのみ grep で抽出。

おなじみ grep での抽出を使って、メールアドレスを抽出しましょう。

検索する文字列:
検索するファイル:
 置換後
(2): boku@dearie.jp
(5): ki-mi@dearie.jp
(9): wa.ta.si01@becky.dearie.jp
(11): wa.ta.si02@becky.dearie.jp
(14): becky@dearie.jp
できましたね。
あとは

検索: 最後に半角スペースあります
置換: なし

検索:
置換: なし

とすると、

 置換後
boku@dearie.jp,ki-mi@dearie.jp,wa.ta.si01@becky.dearie.jp,
wa.ta.si02@becky.dearie.jp,becky@dearie.jp,
文書中の全てのメールアドレスの一覧が作成できました。

このように、一度で出来ない、難しいような処理は、あきらめて何回かに分けて置換していくと、うまくいく場合があります。