こんにちは、shinoです。
ぼちぼちプログラミングしながら、生きています。
私は、プログラミングスクールに通い、継続学習を140日続けています。
今回は、正規表現について書いていこうかと思います。
こんな方に読んで欲しい
- 正規表現を知りたい方
- プログラミング初心者の方
- Railsでバリデーション を書きたい方
正規表現とは
正規表現とは、「文字列の集合を一つの文字列で表現する方法」です。
イメージがしづらいので、より簡潔にいうと、「文字列のパターンを作成して、簡単に検索・置換するための言語」です。
具体例は、郵便番号の場合を検索したいとき。
1 2 |
郵便番号(7桁)かつ「-(ハイフン)」がないパターン ^\d{7}$ |
上記であれば、7桁の数字のみ対象になります。
1 2 |
郵便番号(7桁)かつ「-(ハイフン)」があるパターン ^\d{3}-\d{4}$ |
上記であれば、数字3桁+「-(ハイフン)」+ 数字4桁が対象になります。
正規表現を確認する場合は、以下のサイトで、確認することができます。
正規表現の文字種類
1 |
. ^ $ [ ] * + ? | ( ) |
上記のようなものが、特殊文字としてあります。また、これらの特殊文字を正規表現では、「メタ文字」と呼ばれます。
なんでもいい1文字 .
これを利用すると、なんでもいい一文字を表現することができます。
上記のように、Match resultに表示されている通り、それぞれの文字が検索されます。
行の最初・最後 ^ $
まずは、^は行の最初を表すことができます。
上記のように、先頭に^の後ろの文字がある場合のみ検索できます。
なので、1行目は、最初にテストがないから検索されません。
次に、$は行の最後を表すことができます。
上記の通り、$の前の文字が行の最後にある場合は、検索できます。
なので、1行目と3行目が対象になります。
同じ文字の繰り返し * + ?
最初は、 * は直前の文字を0回以上あることを表現することができます。
上記は、*がoが保管されて検索されます。
また、文字がなくても保管されて検索されます。
次に、+は直前の文字を1回以上あることを表現することができます。
上記のように表示することができます。
直前の文字でなければ対象には、なりません。
最後に、?は直前文字が0個、1個あることが表現することができます。
いずれかの文字列 |
|は、区切られた文字列のいずれかの文字列が存在したときに、検索することができます。
上記は、|で区切られたものがMatch します。
指定した文字のどれか [ ]
[ ]の中にある文字のどれかに合うものを検索できます。
上記は、ハイフンを挟むと連続したものが対象になります。AからZまでの1文字が対象になります。
グループ化 ( )
( )文字を一つのグループにまとめることができます。
まとめたものを検索することができます。
まとめ
簡易的なものをまとめてみました。上記で紹介していたアプリを使うことで簡単に正規表現を確かめることができます。
最初のうちは、多く入力してみて使い方に慣れていくのがいいと思います。完全に覚えておかなくてもいいですが、今回上げたものは、
基本的なものにもなるので、覚えておいた方がいいかもしれません。
また、他にも正規表現のルールはたくさんあるので、また続きを載せていきます。
コメント