正規表現について勉強したのでまとめます。
正規表現とは
正規表現とは「いくつかの文字列を一つの形式で表現するための表現方法」のこと。
ログ分析やバリデーションなどで使用されます。
具体例
例えば「いしだ ゆうき」さんをローマ字で表す場合は、いくつかのパターンが考えられます。
ヘボン式では「ishida yuki」と表現します。
しかし、「し」を「si」、「ゆうき」を「yuuki」と表現するパターンがあります。
また、姓と名の間を半角スペースではなく全角スペースで表すパターンもあります
全てのパターンの組み合わせを書くのは大変ですが、正規表現で表現すると以下のようになります。
ish?ida[␣□]+yuu?ki
␣を半角スペース □を全角スペースとする
解説
「ish?ida」の「?」は前に書かれている文字があってもなくても大丈夫という意味になります。
つまり「h」を含む「ishida」でも、「h」を含まない「isida」でもいいということです。
「yuu?ki」も同様で「yuuki」でも「yuki」でもかまいません。
「ish?da」と「yuu?ki」の間にある[␣□]は「半角スペース」と「全角スペース」どちらか一文字を表すという意味になります。 ブラケットと呼ばれる半角カッコの 『 [ 』 と 『 ] 』 中で文字を列挙すると、その中のどれか1文字を表すことができます。 「ishida␣yuuki」でも「ishida□yuuki」のどちらでもいいということです。
ちなみに文字の間を-(半角ハイフン)で繋ぐと以下のようになります。
- [1-9]は数字の1~9のどれか1文字という意味になります。
- [a-z]はアルファベットのa~zのどれか1文字を表します。
その他
-
「.」で任意の1文字を表すことができます。
- 例) a. → aBやa9
-
「+」ではその直前に置かれたパターンを繰り返すことをイメージします。
- 例) a+ → aaやaaaaaaa
- 例) [a-z]+ → hello
- 例) [0-9␣-]+ → 090-3333-2222(電話番号)や020␣010␣01300
終わりに
難しいイメージがあった正規表現ですが、一つ一つ勉強してみると非常に便利なものであることがわかりました。
他にもいろんな表現方法があるので覚えていきたいと思います。
参考
- Software Design 6月号 特集 「使いどころのわかる正規表現入門」 技術評論社出版 著者 結城 洋志