概要
システムの保守やってるとwhere in のクエリをよく使います。
エクセルの表が添付されて、こいつらを消せとか調査しろみたいな指令が来たとき
ABCD1577
ABCD1618
ABCD1631
みたいなのを
'ABCD1577',
'ABCD1618',
'ABCD1631'
にしたいとか
XXXXABC37540M R52M
XXXXABC37541M R53M
XXXXABC37542M R54M
みたいなの(エクセルから2列コピってくるとtabに挟まれてますね)を
('XXXXABC37540M','R52M'),
('XXXXABC37541M','R53M'),
('XXXXABC37542M','R54M')
にしたいときがあります。
正規表現使ってやってみましょう。
サクラエディタで
だいたいの現場で標準に使われてるサクラエディタでのやり方はこちら。
サクラの正規表現エンジンの所以か、行末を$で指定すると改行まで引っかかってうまくないです。なんでじゃろうな。
苦肉で改行コードを置換前後に入れてたりします。
もうちょっといいやり方があるんでなかろうか…
1項目
- 置換前
^(.*)\r
- 置換後
'\1',\r
2項目
- 置換前
^(.*)\t(.*)\r
- 置換後
('\1','\2'),\r
Vimで
Vimの正規表現での書き方はこちら。
1項目
:%s/^\(.*\)$/'\1',/g
2項目
:%s/^\(.*\)\t\(.*\)$/('\1','\2'),/g
VeryMagic使った方が良さげですね。
割とよく使うので私はvimrcに書いてキーバインドを割り当てています。
VisualModeで選択して使うので、%は抜いています。
vnoremap <Leader>k :s/^\(.*\)$/'\1',/g<CR>
vnoremap <Leader>K :s/^\(.*\)\t\(.*\)$/('\1','\2'),/g<CR>
置換結果の最後の1行はカンマ削ってね。