言葉のさんぽ道

~気ままに写真とゲームの話題が更新されるはず~

正規表現メモ。

よく仕事でログ解析とかする時に、半角スペースが大量に挟み込んでて読みにくい時ってあるよね。今回はそんな時に間の空白を全てタブに変換する方法をご紹介。もしかしたら当たり前の知識かもしれないけど正規表現の書き方はすぐ忘れるのでメモ程度に残しておくよ。
やりたい事は↓のような空白が文章の間に複数連続して出力されているようなログをタブに置換するってこと。TeraTermでコンソール上からログを取る時とかはよくこういう現象があるよね。


abcdefghijk lmno pqrstuvwxyz
abcdefghi jklmno pqrstuvwxyz
ab cdefghijklmno pqrstuvwxyz
abcdef ghijklmno pqrstuvwxyz
abcd efghijklmno pqrstuvwxyz
ab cdefg hijklmno pqrstuvwxyz
a bcdefg h ijklmno pqrstuvwxyz
abcdef ghijklmno pqrstuvwxyz
abcdefghi jklmno pqrstuvwxyz

やり方は、置換元文字列に【  +】(半角スペース2つと半角プラス)を、置換後文字列に【\t】(円マークと半角t)を設定。これで置換するだけで↑が↓のように変換できる。


abcdefghijk lmno pqrstuvwxyz
abcdefghi jklmno pqrstuvwxyz
ab cdefghijklmno pqrstuvwxyz
abcdef ghijklmno pqrstuvwxyz
abcd efghijklmno pqrstuvwxyz
ab cdefg hijklmno pqrstuvwxyz
a bcdefg h ijklmno pqrstuvwxyz
abcdef ghijklmno pqrstuvwxyz
abcdefghi jklmno pqrstuvwxyz

上のやり方は半角スペースが2つ以上連続している時に2つのタブに変換する、というもの。好みでタブを2つにしたり空白文字を3つ連続にしてみたりと色々調整して下さい。タブにするとExcelに貼り変えた時にセルが変わるので便利だす。半角スペースが1個だけのケースはわざと置換してません。意味あるスペースの可能性が高いので。
以上。