Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Where in の条件部分を正規表現でうまいことしよう

$
0
0

概要

システムの保守やってると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行はカンマ削ってね。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>