正規表現についてまとめてみました。
そもそも正規表現とは
いくつかの文字列を一つの文字列にできてしまう形式のこと。使いこなせると検索するときに非常に便利。
正規表現まとめ
「.」;ある一文字を表すことができる。
その一文字は何でもいい。言わば大富豪のジョーカー的存在。
例えば「...は....です。」と検索すると、
- わたしはてんさいです。
- あのこはかわいいです。
- わらわはぽんこつです。
全てヒットする。
##「.」;本当に「.」を使いたい時には「.」の前に「\」をつければよい。
例えば「I am happy.」と検索してしまうと、
- I am happy.
- I am happya
両方ヒットしてしまう。「.」とするとそれを防ぐことができる。
「[]」;かっこの中に「これは入っていてほしい!」という文字を入れる。
例えば「[abcde]」とすれば、aかbかcかdかeのどれかを一つ以上含んでいるものがヒットする。
「[^]」;かっこの中に「この文字を含むものは除外したい!」という文字を入れる。
例えば「[^fgh]」とすればfを含むものやgを含むもの、hを含むものはヒットしない。
「-」;範囲を表せる。
例えば、「[a-z]」とすればaからzまでのどれかを含んでいればヒットすることになる。ここで注意が必要なのは、小文字と大文字は区別して考える必要があること。もし、「[A-Z]」とすれば、
- APPLE
- Kirigirisu888
などはヒットするが、
- udon
- soba
などはヒットしない。逆に言えば、「[^a-z]」で小文字を含むものを除外というように応用することができる。
「\w」;アルファベット一文字の代わりをする。
先ほど紹介した「.」は全ての文字、一文字の代わりができた。これはアルファベット一文字の代わりができる。
「\d」;数字一つの代わりをする。
「\w」と同じように、数字一つの代わりができる。
「\s」;スペース一つの代わりをする。
「\w」「\d」と同じように、スペース一つの代わりができる。
「{}」;何回以上含めばよいか指定する。
「検索したい文字{何回以上含めばよいかを表した数字}」のようにして使う。例えば「a{6}」とすればaを六回以上含むものだけがヒットする。
- aaajkaaa
- tivwaaaaaaaaaaaaaaaaa
はヒットするし
- atkitkitktiti
- aaegtaa
あたりはヒットしない。何回以下しか含まないという条件をつけ足したり、複数の文字のどれかを含むという条件を足すこともできる。例えば、「[abc]{1, 5}」とすれば、aかbかcのいずれかを一回以上三回以下含むものがヒットする。
- aa111
- ab86kc
などだ。
「+」「*」;それぞれ「一回以上」と「ゼロ回以上」。
文字の後ろにそのままつけることで、それぞれ「一回以上」と「ゼロ回以上」じゃないとだめ、という条件をつけられる。例えば「aa+b+c*」としてやれば、aが二回以上でbが一回以上のものが出てくるはず。(cはどちらでもよい。)
##「?」;前の文字はあってもなくてもいいことを表すマーク。
例えば「pcs?」とすると、
- pc
- pcs
どちらもヒットする。
「^」「$」;一番前の一連のワードを指定/ 一番後ろの一連のワードを指定。
例えば「^It」とすれば一番最初に「It」が来るもののみがヒットする。「possible$」とすれば一番最後に「possible」が来るもののみがヒットする。この場合「impossible」もヒットしてしまうことに注意。
「()」;グループ化。
かっこでくくることによって、その中のデータを取り出し、ひとまとまりにできる。また、一時的に記録することができるらしい。かっこを複数回使用することによって、階層構造になっているデータのうち、下層にあるデータを複数回取り出すことができる。
- (\w(\d))
上のようにしてやれば任意の文字と数字を一つずつ取り出しつつ(\wと\d)さらにその数字単体を取り出すことができる(\d)。
「|」;もしくは、の意。
例えば「(blue|red)」なら「blueあるいはred」の意味になる。複雑なものを書く時に重宝するかもしれない。
大文字について。
しばしば大文字を用いると否定の意味になる。例えば「\W」はアルファベットでない一文字。「\D」は数字でない一文字。「\S」は空白でないことを表す。
#まとめ
基礎的なことはこれくらいかなと思います。