tsv(csv)ファイルの特定の列を正規表現でキャプチャ

正規表現で列が5個のtsvの各項目をキャプチャする文字列

^([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)$

 

f:id:engineer-kiyo:20201220012743p:plain

サクラエディタ onigmoで動作確認済

 

f:id:engineer-kiyo:20201220012853p:plain

キャプチャすればいろいろと活用できる。

 [^\t]はタブ文字以外の文字列ということ。*がついているので、「タブ文字以外の文字の0回以上の繰り返し」となる。

括弧を付けているので変数にキャプチャされる。

詳しいことは後述の書籍をご覧いただきたい。

 

●1列目を削る場合は以下に置換

 $2\t$3\t$4\t$5

 ↓置換結果

 f:id:engineer-kiyo:20201220014210p:plain

 

●5列目を先頭に持ってくる場合は以下に置換

 $5\t$1\t$2\t$3\t$4

 ↓置換結果

 f:id:engineer-kiyo:20201220013402p:plain

 

●3列目だけ抜き出す場合は以下に置換

 $3

  ↓置換結果

 f:id:engineer-kiyo:20201220013459p:plain

 

csvファイルでも同じことできるが、項目の中に半角カンマがある場合があるので、tsvに変換してから行うのがおすすめ。

csvの各項目はダブルクォーテーションで囲われているとする。

※項目中にタブ文字は存在しないものとする(ある場合は事前にエスケープして、あとで戻しが必要)

 

csvをtsvにする正規表現置換

 ^" → 空白に置換(先頭のダブルクォーテーションを除去)

 "$ → 空白に置換(末尾のダブルクォーテーションを除去)

 "," → \t に置換(列間の区切りカンマをタブ文字に置換)

 tsvにした上で先述の処理を行うと失敗がない。

  ↓置換前

 f:id:engineer-kiyo:20201220013810p:plain

 ↓置換後

 f:id:engineer-kiyo:20201220013912p:plain

●tsvをcsvにする正規表現置換(上記の逆をする)

 ^|$ → " に置換(先頭および末尾にダブルクォーテーション付与)

 \t → "," に置換(列間の区切りをカンマにする)

  ↓置換前

 f:id:engineer-kiyo:20201220013912p:plain

  ↓置換後

 f:id:engineer-kiyo:20201220013810p:plain

 

 正規表現を勉強するなら「はじめての正規表現 for Web Creatorが超おすすめ

たったの350円だが、ITエンジニアには100万円の価値があると思う。

非常にわかりやすい。

エンジニアでなくてもよくテキストを編集するとかエクセルで事務作業する人にお勧めの技が満載。エクセルで編集するよりも高速にできることが多い。

はじめての正規表現 for Web Creator Kindle版