LoginSignup
2
2

More than 1 year has passed since last update.

正規表現まとめ

Last updated at Posted at 2018-04-05

正規表現についてまとめてみました。

そもそも正規表現とは

いくつかの文字列を一つの文字列にできてしまう形式のこと。使いこなせると検索するときに非常に便利。

正規表現まとめ

「.」;ある一文字を表すことができる。

その一文字は何でもいい。言わば大富豪のジョーカー的存在。
例えば「...は....です。」と検索すると、

  • わたしはてんさいです。
  • あのこはかわいいです。
  • わらわはぽんこつです。

全てヒットする。

##「.」;本当に「.」を使いたい時には「.」の前に「\」をつければよい。

例えば「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」は空白でないことを表す。

#まとめ
基礎的なことはこれくらいかなと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2