基本情報技術者試験 練習問題 16:正規表現の基本パターン
正規表現について述べた文として、正しいものはどれか。
- 正規表現の「.」(ドット)は「任意の1文字」にマッチし、改行文字を含むすべての文字にマッチする。
- 正規表現の「*」は直前のパターンが0回以上繰り返されることを意味する。
- 正規表現の「^」は文字列の開始位置を意味し、「$」は文字列の終了位置を意味する。
- 正規表現「[0-9]+」は1文字以上の数字にマッチし、複数の連続した数字にもマッチする。
- 正規表現「a|b」は文字aと文字bを順に検索し、両方が含まれる文字列にのみマッチする。
Qraftユーザーの成績:難易度 Dランク(レーティング1137)・正答率 67%(10/15回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)
正解と解説を見る
正解:正規表現「[0-9]+」は1文字以上の数字にマッチし、複数の連続した数字にもマッチする。
正規表現(Regular Expression)はテキスト処理における強力なパターンマッチング機能です。
基本メタ文字:
「.」(ドット):任意の1文字にマッチします。ただし、言語やオプション設定により改行を含むかは異なります(通常は改行を除く)。
「*」と「+」:
- 「*」:直前のパターンが0回以上繰り返される(0回でもOK)
- 「+」:直前のパターンが1回以上繰り返される(最低1回必要)
- 例:「a*」は""、"a"、"aa"、"aaa"など全てマッチ
- 例:「a+」は"a"、"aa"、"aaa"などマッチするが""(空文字)はマッチしない
「^」と「$」:
- 「^」:文字列の開始位置を表すアンカー
- 「$」:文字列の終了位置を表すアンカー
- 例:「^abc$」は文字列全体が"abc"である場合のみマッチ
「[0-9]」:数字の範囲指定
- 「[0-9]」:0から9の1文字
- 「[0-9]+」:1文字以上の数字が連続する("123"、"9"など)
正しいのは「正規表現『[0-9]+』は1文字以上の数字にマッチし、複数の連続した数字にもマッチする」です。
「a|b」:選択(OR)
- 「a」または「b」の一方がマッチすればOK
- 両方が含まれる必要はありません(「a」だけでもマッチ)