こんにちは、はじめまして&初投稿いたしますソフィと申します。
今回は知っておくと大変便利な正規表現について紹介させて頂きます。
そもそも正規表現とは?
正規表現とはコンピューター上の様々な文字列を最もシンプルに記述する表記法です。
どんな時に使うの?
サクラエディタ等のエディタファイルで検索や置換を行う際にとても便利です。
表記方法はあまりにも種類が多いので、私が良く使う3つをご紹介します。
例えば以下のような内容のファイルがあったとします。
ruby php python
DAISY Strawberry Hydrangia
numbers 123456789
email: hoge_hoge3@fuga_fuga.com
個人的によく使う正規表現
※上記の文字が並んだファイルをサクラエディタで開き、以下の項目内容を検索すると想定します。
※メタ文字とは特殊な意味を持つ文字(*, +, ^ などなど)。バックスラッシュ()なしでは特殊な意味が有効にならない。
・数字を全て選択したい
表記法: \d+
意味: \d=数字全て取得、+=直前の文字が1回以上繰り返すと取得
結果:
・空白だけ選択したい (※備考:コンピュータ上では空白も文字として扱われます)
表記法: \s+
意味: \s=空白を取得、+=直前の文字が1回以上繰り返すと取得
結果:
・先頭に+81と付く電話番号を取得したい
表記法: \+81\d+
意味: \+81=+81を取得(+は特殊記号なので+を通常記号と同様に取得する為に手前に\が必要)、\d=数字全て取得、+=直前の文字が1回以上繰り返すと取得
結果:
・email部分だけ全選択したい
取得したいemail(例):s-hoge_hoge3@fuga_fuga.com
表記法: [0-9A-Za-z_\.\-]+@[0-9A-Za-z_\.\-]+
意味: [0-9A-Za-z_\.\-]= “0-9″は数字(0から9)全て取得&”A-Za-z”はアルファベット大小文字全て取得&”_”はアンダーバー取得&”\.”はピリオド記号取得&”\-“はハイフン記号取得、@=@記号取得、+=直前の文字が1回以上繰り返すと取得
結果:
ポイント:[]+ は[]の中の任意の文字が繰り返されるものを取得する。
失敗例1: [0-9A-Za-z_\.]+@[0-9A-Za-z_\.\-]+
結果:
失敗原因:先頭の[]の中に”\-“が入っていないので、email先頭のs-を取得できない。
ポイント:”-“ハイフンは特殊記号なので、手前に”\”を付けてコンピュータに”-“はメタ文字ではなく”-“という1つの記号である認識させないといけない。
・email応用編_@前に何もない場合も取得したい
取得したいemail(例):@fuga_fuga.com
表記法: [0-9A-Za-z_.-]@[0-9A-Za-z_.-]+
意味: [0-9A-Za-z_\.\-]= “0-9″は数字(0から9)全て取得&”A-Za-z”はアルファベット大小文字全て取得&”_”はアンダーバー取得&”\.”はピリオド記号取得&”\-“はハイフン記号取得、=直前の文字が0回以上繰り返すと取得、@=@記号取得、+=直前の文字が1回以上繰り返すと取得
結果:
ポイント:先頭の[]の後に”*”が入っているので@の前に何もなくても、@記号以降のを取得する。
最後に
以上、正規表現とは何なのか&数が少なめで申し訳ありませんが覚えておくと便利な正規表現の表記法を紹介させて頂きました。本日ご紹介させて頂いた知識がみなさまのお役に立てれば幸いです。
それでは失礼いたします。
学習参考用サイト
正規表現の確認(練習)に役立つサイト
Regular Expression Test Drive
正規表現の勉強に役立つサイト
Let’sプログラミング 正規表現とは
正規表現メモ
サルでもわかる正規表現入門
※上記以外にも基本”正規表現”と検索するだけで沢山でてきます。
よければ自分に合う学習サイトを探してみてください!