秀丸でマクロもしくは正規表現を教えてください。CSVファイルがあって、CSVの内容は


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._-]+だと思うのですが、どのように文字のみを削除すればよいかわかりません。もしくはマクロを使って一発で変換できれば、それがよいです。ご教授ください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/01/27 12:28:29
  • 終了:2007/02/03 16:11:48

回答(3件)

id:garyo No.1

garyo回答回数1782ベストアンサー獲得回数962007/01/27 13:03:58

ポイント27pt

1.正規表現の置換で

「,」→「,\n」を実行

2.一度ファイルを保存する

3.「検索」→「grepの実行」で2.で保存したファイルに対し

「@」で検索する。(正規表現使ってもいいかも)

4.結果の頭にファイル名と行数が入ってるので

正規表現で「^.*\):」→「」を置換して削除

5.あと行頭にスペースが残るので

「 」→「」で削除

6.一行に戻す場合は

「,\n 」→「,」を正規表現で置換


http://q.hatena.ne.jp/1169868508

id:huruyosi No.2

huruyosi回答回数30ベストアンサー獲得回数32007/01/27 13:40:18

ポイント27pt

http://dummy

[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;
id:KRM No.3

KRM回答回数27ベストアンサー獲得回数62007/01/27 19:05:28

ポイント26pt

変換マクロ

replaceall "^([^@,]*,)*([a-zA-Z._-]+@[a-zA-Z._-]+,?).*$" , "\\2" , regular, nocasesense;

でいけると思います。

メールアドレス中の大文字アルファベットを許す場合です。

http://dummy/ ダミー

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません