こんにちは、最近M-1を見返しているガッキーです。
今回は正規表現について触れようかと思います。
まず正規表現とは…
|
ログやコードから特定のパターンを検索や置換したいと思ったことはないでしょうか?
そういったとき正規表現が使えます。
例えば
ログに下記のようなものがでていて、
Func1 1.0 sec 他の処理 他の処理 Func2 2.5 sec 他の処理 : : : 他の処理 他の処理 Func3 0.5 sec |
「末尾に”sec”を含むもののみ抽出」したいという場合があったとします。
「末尾に”sec”を含むもののみ抽出」(=「”sec”で終わらない行を削除」)なので
一度ログをサクラエディタにコピーして
^.*(?<!sec)$ もしくは ^(?!.*sec$).+$ |
使うエディタはサクラエディタでなくても構いません。
正規表現が使え、行削除が行えるものであれば他のエディタでも大丈夫です。
私は起動が早いという理由でサクラエディタを使用しています。
(※別のエディタを使用する場合は正規表現の書き方が変わる可能性があるので、使用するエディタのサポートしている正規表現を調べてください。)
その後、エクセルとかでフィルタリングしたいなと思った場合
置換前 ^(?=.*sec)(\w+)\s+(\d\.?\d*).*$ |
置換後 $1,$2 |
その後エクセルで開いてテーブルを使ってフィルタリングしたりできます。
この動作を何回も継続的にするのであれば、何か言語を用いたり、
直接プログラムからcsv形式で出力できるようにするのが良いかと思うのですが、
今だけサクっとやってしまいたい、組むほどでもないというときは正規表現が使えます。
正規表現の書き方は最初慣れず、どう書けばいいかがわからないかもしれません。
ですが、普段の検索の時から調べ、使うようにしていると勝手に慣れていきます。
正規表現は使用するエディタがサポートしているものによって書き方が変わる可能性があるので書き方は自分の使用しているエディタをもとに調べてみてください。
また、今回紹介したものは簡易的なもので、
正規表現でもっと複雑なことができるかと思います。
皆さんも使ってみてはいかがでしょうか?