お疲れ様です、玉尾です。
今回は現場で使える正規表現について書いていきたいと思います。
まず、エディタなのですが、私はさくらエディタ派なのと現場で推奨しているエディタがさくらエディタなので、さくらエディタを使います。
一番使うのは、Excelのセルの文字列の成形と、Ecliseでプロジェクトを実行したときに出るエラーログの抽出なのどに使います。
正規表現の使い方ですが、例えば、ファイルがあったとします。
改行コードには次のように3種類があり、それぞれ使い分けられています。
① CRLF (キャレッジリターン・ラインフィールド)
⇒Windowsで一般的に使用されている改行コード
⇒CRLFは正規表現では、\r\nと定義される
② CR(キャレッジリターン)
⇒MacOS9以前のMacで使用されている改行コード
⇒CRは正規表現では、\rと定義される
③ LF(ラインフィールド)
⇒UNIX(Linux)や、MacOSX以降で一般的に使用されている改行コード
⇒CRは正規表現では、/nと定義される
サーバのPCがUnix系OSで、LFのファイルをローカルにダウンロードして、ローカルで編集したファイルを再びサーバにアップロードするとローカルのファイルがCRLFで保存されている場合、不整合を起こす場合があります。
Unix系のOSにあるファイルを編集、もしくは、サーバにアップロードするときは、必ず改行コードをLFに設定しましょう。
また、3つの改行コード全てを一度に検索対象としたい場合は、次のように表すことができます。
「\r\n」
例えば改行を全て削除したい場合、下図のように置換画面を開いて(Ctrl+R)置換前に「\r\n」と入力して「正規表現」にチェックを入れます。置換後は\t (区切り)にします。
これで、置換を実行すると、複数行あった文字列が1行のタブ区切りになります。
一行をExcelに張り付けると、1行にセルごとの文字列が表示されます。
置換前
この状態で「すべて置換」を選択すると、11個の改行が削除されて1行になりました。
置換後
1行から、複数行に置換する場合は、
置換前に\t
置換後に\r\n
を入力して、「すべて置換」を選択すると、
全てのタブは改行コードに変わり、99行になりました。
置換後
1行から複数行にデータを成形するパターンは、現場でもよく使います。
例えば、エラーログのメッセージが1行で長く記述されていた場合は、複数行に置換して見栄えを良くしたりといった場合に使っています。
正規表現を使いこなせると手作業でデータを修正するより、正確で作業も早くなります。