abcde,sfse,abc@may.com,,abc,abc,,,,
abcs@hello.com,,,,abc,der,dss,,,,,,
dors,hello,back,take@takeonme.com,bee,
, ,,,,sfa,sfa,big@big.com
などとなっています。この中でメールアドレス以外の
文字を削除して
abc@may.com,
abcs@hello.com,
take@takeonme.com,
big@big.com
というように、書き換えたいと思っています。メールアドレスにヒットさせる正規表現は、[a-z._-]+@[a-z._-]+だと思うのですが、どのように文字のみを削除すればよいかわかりません。もしくはマクロを使って一発で変換できれば、それがよいです。ご教授ください。
1.正規表現の置換で
「,」→「,\n」を実行
2.一度ファイルを保存する
3.「検索」→「grepの実行」で2.で保存したファイルに対し
「@」で検索する。(正規表現使ってもいいかも)
4.結果の頭にファイル名と行数が入ってるので
正規表現で「^.*\):」→「」を置換して削除
5.あと行頭にスペースが残るので
「 」→「」で削除
6.一行に戻す場合は
「,\n 」→「,」を正規表現で置換
[a-z._-]+@[a-z._-]+だと思うのですが、どのように文字のみを削除すればよいかわかりません。
タグ付き正規表現を使うと正規表現にマッチした部分をとりだせます。
適当なサイトがなかったので秀丸エディタヘルプの
検索系コマンド→正規表現→\1・\2 一般的正規表現互換のタグ付き正規表現
を参照してください。
置換ダイアログを開いて
検索:^.*,([a-z._-]+@[a-z._-]+).*$
置換:\1
と入力すると、メールアドレス部分だけを残せます。
ただ、この場合だと
abcs@hello.com,,,,abc,der,dss,,,,,,
このパターンが上手く対応できないので、行の先頭からメールアドレスが始まるパターンとの2種類をマクロで実行されてはいかがですか。
下は希望された状態に置換するマクロです。
replaceall "^.*,([a-z._-]+@[a-z._-]+,?).*$" , "\\1" , regular, nocasesense; replaceall "^([a-z._-]+@[a-z._-]+,?).*$" , "\\1" , regular, nocasesense;
変換マクロ
replaceall "^([^@,]*,)*([a-zA-Z._-]+@[a-zA-Z._-]+,?).*$" , "\\2" , regular, nocasesense;
でいけると思います。
メールアドレス中の大文字アルファベットを許す場合です。
http://dummy/ ダミー
コメント(0件)