はじめに
この記事は正規表現全く分からない....という方をメインとしています。
"厳密にはそうじゃないんだけどなぁ"というのが有るかもしれませんが、正規表現の導入の部分なので多目に見ていただきたいと思います。
正規表現 とは
wikipediaを見ると
正規表現(せいきひょうげん、英: regular expression)とは、文字列の集合を一つの文字列で表現する方法の一つである。 正則表現(せいそくひょうげん)とも呼ばれ、形式言語理論の分野では比較的こちらの訳語の方が使われる。 まれに正規式と呼ばれることもある。
正規表現
と、書かれていますがよくわからないと思います。
簡単に言うと
効率よく検索出来る言語のようなものです。
正規表現で使用する特殊文字
. \ ^ $ [ ] ( ) * + ? |
正規表現を利用するためにこれらの__メタ文字__というものを使用します。
[ . ]なにか1文字
何らかの文字1文字だけ表現するときに " . " を使います。
これは . です。
これは__本__です。
これは__車__です。
これは ... です。
これは__コップ__です。
これは__マウス__です。
[ * ]直前の文字を0文字以上繰り返す
直前の文字を0文字以上繰り返すときに" * "を使います。
0文字以上なので直前の文字がなくてもいいのです。
あれはコー * ヒーですか?
あれは__コヒー__ですか?
あれは__コーヒー__ですか?
あれは__コーーーーーーーヒー__ですか?
※ワイルドカードの意味とは異なりますので間違いないようにしてください
[ + ]直前の文字を1文字以上繰り返し
直前の文字を1文字以上繰り返すときに" + "を使います。
1文字以上なので直前の文字が必ず必要です。
メー + ルがきてますか?
__メール__がきてますか?
__メーーーーール__がきてますか?
※ " + "は1文字以上の繰り返しなので__メルー__とはならないので注意してください
[ ? ]直前の文字が0文字か1文字か
直前の文字を0文字か1文字だけ繰り返すときに" ? "を使います。
windows ? PC持ってる?
__window__PC持ってる?
__windows__PC持ってる?
[ [] ]中に書いてある文字のどれか
いずれかの文字に当てはめたいときに使います。
今日は[傘鞄靴]を持ってきてください。
今日は__傘__を持ってきてください。
今日は__鞄__を持ってきてください。
今日は__靴__を持ってきてください。
※[]に書かれているものだけなので、
今日は__服__を持ってきてください。
は当てはまりません。
[ () ]複数文字単位でまとめる
今まで一文字単位での処理しかしていませんでした。
なので複数文字を処理したいときは()を使ってまとめることが出来ます。
(かわいい)猫が欲しい
と、()の内部を1文字のようにまとめることが出来ます。
(かわいい) * 猫が欲しい
とすると
直前の文字、()が0文字以上繰り返しなので
猫が欲しい
__かわいい__猫が欲しい
__かわいいかわいい__猫が欲しい
ということになります。
[ . ][ * ]組み合わせて1
何らかの文字1文字だけ表現するときの[ . ]と
直前の文字を0文字以上繰り返すときの[ * ]を掛けあわせて使います。
携帯、持 ...*
携帯、持__って__
携帯、持__つの??????__
※[ . ]が3つなので、何かしらの文字が3文字。
ですが、[ * ]が直前の文字を0文字以上ということなので__2文字以上__の文字ということになります。
よって
携帯、持つ
はダメです。
[ () ][ ? ]組み合わせ2
複数の文字をまとめる()と
直前の文字を0文字か1文字繰り返す?を使います
この(コーヒー) + 豆を焙煎しておいて
この豆を焙煎しておいて
この__コーヒー__豆を焙煎しておいて
直前の__コーヒー__を0文字か1文字だけ繰り返すので
このコーヒーコーヒー豆を焙煎しておいて
では間違いになります。