HEXA BLOG

TIPS

HEXA BLOGその他TIPS2019.2.1

正規表現について

こんにちは、最近M-1を見返しているガッキーです。

今回は正規表現について触れようかと思います。
まず正規表現とは…

正規表現(せいきひょうげん、regular expression)とは、
文字列の集合を一つの文字列で表現する方法の一つである。

引用元:Wikipedia

ログやコードから特定のパターンを検索や置換したいと思ったことはないでしょうか?
そういったとき正規表現が使えます。

例えば
ログに下記のようなものがでていて、

Func1 1.0 sec
他の処理
他の処理
Func2 2.5 sec
他の処理



他の処理
他の処理
Func3 0.5 sec

「末尾に”sec”を含むもののみ抽出」したいという場合があったとします。
「末尾に”sec”を含むもののみ抽出」(=「”sec”で終わらない行を削除」)なので
一度ログをサクラエディタにコピーして

^.*(?<!sec)$ もしくは ^(?!.*sec$).+$

上記の正規表現で「sec」で終わらない行を行削除します。

使うエディタはサクラエディタでなくても構いません。
正規表現が使え、行削除が行えるものであれば他のエディタでも大丈夫です。
私は起動が早いという理由でサクラエディタを使用しています。
(※別のエディタを使用する場合は正規表現の書き方が変わる可能性があるので、使用するエディタのサポートしている正規表現を調べてください。)

その後、エクセルとかでフィルタリングしたいなと思った場合

置換前 ^(?=.*sec)(\w+)\s+(\d\.?\d*).*$
置換後 $1,$2

こういう正規表現でcsv形式にします。

その後エクセルで開いてテーブルを使ってフィルタリングしたりできます。

この動作を何回も継続的にするのであれば、何か言語を用いたり、
直接プログラムからcsv形式で出力できるようにするのが良いかと思うのですが、
今だけサクっとやってしまいたい、組むほどでもないというときは正規表現が使えます。

正規表現の書き方は最初慣れず、どう書けばいいかがわからないかもしれません。
ですが、普段の検索の時から調べ、使うようにしていると勝手に慣れていきます。

正規表現は使用するエディタがサポートしているものによって書き方が変わる可能性があるので書き方は自分の使用しているエディタをもとに調べてみてください。
また、今回紹介したものは簡易的なもので、
正規表現でもっと複雑なことができるかと思います。

皆さんも使ってみてはいかがでしょうか?

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE