Viでメールアドレスを置換する正規表現を教えて下さい。


:1,$s/ hogehogehoge

の形でお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/11/12 12:05:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:kichitaka

コメントを頂いて、補足です。おっしゃる通りです。申し訳ありません。

DBの中身をテスト環境に移すにあたってメールアドレスをダミーデーターに書き換えたくsql全体に置換をかけたいと思っています。

aaaa@adsf.ne.jp を aaaaa@aaaa.comに置換等を行いたいのです。

phpでこの手の事はよくやるのですが、viでやりたく。(php通せばすぐできるのですが今後の為にもviでチャレンジしたいなと。sed等の方がよいのかもしれませんが。)

回答2件)

id:tea_cup No.1

回答回数1071ベストアンサー獲得回数194

ポイント50pt

1,$s/[^ @][^ @]*@[^ @][^ @]*/aaaaa@aaaa.com/

で良いですか?
viというかedの構文久々なので抜けあるかもですけど。

個人的には、sedで
s/[^ @][^ @]*@[^ @][^ @]*/aaaaa@aaaa.com/g
したいです。

id:kichitaka

ありがとうございます。

2013/11/13 15:56:08
id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154

ポイント50pt

メールアドレスにマッチする正規表現というのは、きっちりやろうとすると意外と面倒なのですよ。
http://q.hatena.ne.jp/1364362489#a1195752

aaaa@adsf.ne.jp を aaaaa@aaaa.comに置換等を行いたいのです。

という指定が、「(メールアドレスっぽいの文字列)@adsf.ne.jp」を、固定の文字列「aaaaa@aaaa.com」に変換したい、ということであれば、多少は簡単になりますけど。

:1,$s,[A-Za-z0-9!#%&`_=\\/$'*+?^{}|~.-][A-Za-z0-9!#%&`_=\\/$'*+?^{}|~.-]*@adsf\.ne\.jp,aaaaa@aaaa.com,g
id:kichitaka

ありがとうございます。確かに、きっちりメールアドレスは大変ですね。

2013/11/13 15:55:51
  • id:TransFreeBSD
    どうなってるのをどう置換したいのか書いてないと答えれないのじゃないかな?
    例えば「hoge@foo.jp」を「"hoge" <hoge@foo.jp>」のようにとか。
  • id:niwa-mikiho
    php でも perl でもコンソールでプログラム書いた方が速い気がする。

    何が何でも vi で行うのではなく、自分が得意とするもので処理した方がスピードも確実性も上がると思いますよ。

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

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

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

回答リクエストを送信したユーザーはいません