コラム

知って得する作業効率アップ(正規表現編)

知って得する作業効率アップ(正規表現編)
SI部の効率野郎です。
 
前回は、エクセルのショートカットキーをご紹介しました。
今回は正規表現による検索/置換をご紹介したいと思います。
 
正規表現って何?覚えると何ができるの?という方向けの内容になります。
 
正規表現というものを一言で表現すると、「ある文字の並びを表現する」1つの方式です。
例えば、半角数値は[0-9]、半角アルファベットは[a-z]、というように表現されます。
 
これを覚えると何ができるのか、どう効率化につながるのか、というのを例を挙げて書かせていただきます。
 
例えば、こんな文章があるとします。
 

2016/11/30
今日はハンバーグ食べた
 
2016/12/1
今日はオムライス食べた

 
この文章の日付部分の表現を「スラッシュ区切り(2015/11/30)」から「年月日区切り(2015年11月30日)」にしたい場合、皆さんはどうやって変更していますか?
 
ひとつひとつ打ちなおしてはいませんか?
 
例の内容では日付が2つだけなので「ささっと打ち直してしまう」というのも手だと思います。
 
ですがこれが100個、200個ある場合に手で直すのはとても気が滅入る作業です。
そんな時に覚えておくと楽なのが正規表現です。
 
例で挙げた変更について正規表現を利用して置換したいと思います。
 
まずはじめに正規表現の置換機能があるテキストエディタの準備をしてください。
おすすめはサクラエディタか、秀丸です。
 
次に例で挙げた文章をテキストエディタに貼って、置換のダイアログを表示してください。
(Ctrl+Rのショートカットで表示されるかと思います)
 
検索文章と置換文章部分に以下の文字を指定して、正規表現による置換を行ってみてください。
 

検索文章 ([0-9]{4})\/([0-9]{1,2})\/([0-9]{1,2})
置換文章 \1年\2月\3日

 
この内容で置換を実行した結果、次のようになっているかと思います。
 

2016年11月30日
今日はハンバーグ食べた
 
2016年12月1日
今日はオムライス食べた

 
「確かに置換はうまくいったけど、検索文章と置換文章に指定した文字の意味がさっぱりわからない。」という方も多いかと思いますが、今回はどんなことが出来るかをお伝えしたいのでそれぞれの意味は割愛させていただきます。
 
最後に、私がよく使う正規表現を挙げさせていただきます。
 
1.空行を削除したい。

検索文章 ^\n
置換文章 ※置換文章は空

 
2.全文章に1行ずつ空行(行間)を入れたい。

検索文章 $
置換文章 \n

 
3.行のデータ(改行区切り)を列のデータ(タブ区切り)にしたい。

検索文章 \n
置換文章 \t

※サクラエディタの場合は\nは\r\nにする必要があります。
 
いかがでしたでしょうか。
皆さまも正規表現による検索/置換を活用してみてください。