正規表現を日常に取り入れようじゃありませんか、そんなこんなを Sagasoon.
プログラムやらをしていると、見知らぬ言葉た沢山でてきます。
そんな言葉の代表格、「正規表現」。
オートマトンとか言う言葉もちらほら出てくるかもですが、今回は「正規表現」を少しだけ。
まずは、プログラマーが日常的にプログラムを作る時に使えそうな話題からやりましょう。
今日は、「空行を排除する」ってことをします。
エディタで体験する
プログラムを作るときは、エディタを使ってますか?
ここでは、サクラエディタで説明しますね。
もし持ってないようでしたら、インストールしちゃいましょう。
インストールしたら、起動して開始です。
体験する準備
何かのデータを扱う時や、プログラムが改行だらけの場合、空行だけを削除したくなります。
/*単価と数量で合計を出す*/ $tanka=10;/*単価*/ $suryo=2;/*数量*/ $gokei=$tanka * $suryo; echo "合計:$gokei\n"; /*次の処理*/
ブログで、空行(1行が改行だけの行があるもの)だらけの文面があると、私は「改行を削除したい病」なので、今回の正規表現で消したくなる病が・・・。

この画面で、メニューの「検索」から「置換」を選択します(キーボードショートカット:CTRL+R )。
こんな画面が出てくればOKです。

ここの画面で、下記の赤い〇のところを操作していきます。

簡単に手順を書くと、この4段階です。
- 「正規表現」にチェックを入れる
- 置換前に、置換対象を入力し
- 置換後に、置換した後の文字を入力し
- 「すべて置換」を押すと、置換される
「りんご」を「ごりら」に変えたかったら、「置換前にリンゴを入力」して、「置換後にごりら」を指定して、「すべて置換」を押せばいいだけです。
空行を削除しよう
さて、本題です。
置換前、置換後に、下記のような文字をいれましょう。置換後には何もいれません。

・置換前:^\r\n
・置換後:
そしたら、「すべて置換」をクリックしてみてください。

空行が消えました。
ちょっと醜いかもですけどね(笑)
まあ、そこは微調整を。
解説
「^\r\n」って文字を「置換前」の文字で指定しましたよね。
これ、「^\r\n」の文字そのものを変換しているわけじゃないです。
「こうゆうルールのものを置換してね」という書き方です(これが正規表現)。
たとえば、
「^\r\n」を「^\s*\r\n」
として実行することもあります。
この場合は、前者は「改行のみの行」でしたが、後者は「空白(スペース)が何個かあって、かつ最後は改行の行」っていう表現です。
何個かあってといいましたが「0個」でも良いとしてます。
ですので、「改行のみの行」と、「空白が何個かあるだけで何も書いてない行」の両方が置換のターゲットになってる感じです。
「\s*」を加えただけで、ちょっとだけ解釈が増えましたね。
こういったルールが沢山あるのが正規表現です。
まとめ
いかがでしたでしょうか。
正規表現の入り口を少し紹介してみました。
この書き方を少しずつ覚えていくと、実際にプログラム上で必要になったときに、さくっと使えるようになります。
日々、使い倒して慣れるといいです。
コメント