問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
このメニューでは、正規表現について学びます。正規表現とは、文字列のパターンを表現するための文字列です。例えば、'paiza' という正規表現には、文字列 'paiza' があてはまり、'p..za' という正規表現には、文字列 'paiza' や 'pizza' などがあてはまります。
正規表現を各プログラミング言語に用意されている正規表現の検索用の関数に渡すことで、文字列の出現位置や、マッチした文字列を取得することができます。正規表現のライブラリには re, regex, regexp, regular expression などの名前がついていることが多いです。ぜひお使いの言語の正規表現のライブラリの使い方を調べてみてください。
このメニューの最初のテーマでは、正規表現の基本的な文法を学んでいきます。各問題では、最初に正規表現のルールを解説し、そのパターンを用いて文字列の検索を行います。1 つのパターンについて複数の表現方法がある場合も存在しますが、そのような場合は、どの表現方法でも正解となります。
〈正規表現のルール 1.〉半角記号以外の文字はそのまま正規表現になる
正規表現で英数字からなる文字列を検索したい場合は、基本的にその文字列をそのまま正規表現として使うことができます。例えば、文字列 paiza813
を検索したいときは、正規表現も paiza813
となります。
また、半角記号以外のほとんどの文字は、そのまま正規表現として使うことができます。例えば、文字列 paiza株式会社
を検索したいときは、正規表現も paiza株式会社
となります。
では、実際に正規表現を用いて文字列の検索を行ってみましょう。
文字列 S が与えられるので、正規表現を用いて、文字列 S において以下のパターンが何文字目から出現するかを求めてください。
パターン: 文字列 paiza
ただし、検索対象のパターンが複数回出現する場合は、最初に出現する位置を出力してください。
また、文字列の先頭の位置を 0 として、各文字の位置を左から順に 0, 1, 2, ... とします。
s
文字列 S において、パターンが最初に出現する位置を整数で 1 行で出力してください。
また、末尾に改行を入れ、余計な文字を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ S は ASCII 文字 (半角英数字記号) で構成される 1000 文字以下の文字列
・ S には、指定されたパターンが必ず 1 回以上出現する
https://paiza.jp/
8