正規表現の基本 — パターンで文字列を検索・置換する
導入
Webフォームで「メールアドレスの形式が正しくありません」と表示されたことはないでしょうか。その判定を陰で支えているのが正規表現です。文字列のパターンを記号で表現することで、検索・置換・入力チェックをシンプルに実現できます。
なぜ重要か
正規表現はプログラミングの世界でほぼ共通して使われる記法であり、ITパスポートでは「この記号は何を意味するか」「このパターンはどの文字列に一致するか」という形で出題されます。テクノロジ系の中でもやや発展的なテーマですが、基本記号を5〜6個覚えるだけで正解に届く問題がほとんどです。
エンジニアでなくてもテキストエディタの高度な検索機能やスプレッドシートの入力規則設定など、さまざまなツールで正規表現を活用する機会があります。「.*」で任意の文字列を表せることを知っているだけで、業務の検索効率が上がる場面もあります。基本の記号の意味をひとつずつ丁寧に押さえておくことで、試験の読み取り問題も実務の応用も両方に対応できるようになります。
くわしく知ろう
正規表現(regular expression)とは、文字列のパターンを一定の記号で表す記法を指します。テキストエディタの検索や、プログラミング言語での文字列処理、入力バリデーションなど幅広い場面で活用されています。
代表的な記号として、まず「.」は任意の1文字に一致します。次に「*」は直前の文字や表現が0回以上繰り返すことを、「+」は1回以上繰り返すことを表します。「?」は0回または1回(省略可能)を意味します。
「[]」は文字クラスと呼ばれ、その中に含まれる文字のどれか1文字に一致します。たとえば「[abc]」はa・b・cのどれか1文字、「[0-9]」は0から9の数字1文字に一致します。「^」を先頭に置くと否定の意味になり「[^0-9]」は数字以外の文字を表します。
これらを組み合わせることで、たとえばメールアドレスの簡易チェック(文字列@文字列.文字列)や、電話番号の形式検証(数字とハイフンのパターン)などを実現できます。正規表現はITパスポートでは概念として問われることが多く、各記号の意味を大まかに押さえておくことが重要です。
具体例で理解する
たとえば「[0-9]+」は1桁以上の数字の並びに一致するパターンです。電話番号入力欄で数字以外が入力されていないかチェックする際などに使われます。また「.*」は任意の文字が0文字以上続くパターンを表し、検索条件のワイルドカードとして活用されます。
試験での出題パターン
【パターン1:記号の意味を問う問題】
「正規表現で「+」が表す意味として最も適切なものはどれか」という形式が頻出です。4択には「0回以上の繰り返し(*)」「1回以上の繰り返し(+)」「0回または1回(?)」「任意の1文字(.)」が並ぶことが多く、「*」「+」「?」「.」の4つをセットで覚えておくことが重要です。
【パターン2:パターンが一致する文字列を選ぶ問題】
「正規表現「[0-9]+」に一致する文字列はどれか」のように、具体的なパターンを示し、4つの文字列候補から一致するものを選ぶ問題です。空文字列・英字のみの文字列・数字のみ・混在の文字列が選択肢に並ぶことが多く、記号の意味を機械的に当てはめて判断する練習をしておくとよいでしょう。
【パターン3:用途を問う概念問題】
「入力フォームでメールアドレスの形式チェックに使う技術はどれか」のように、正規表現の概念的な利用場面を問う問題もあります。バリデーション(入力検証)・テキスト検索・置換処理といったキーワードと正規表現を結びつけておくことが大切です。
よくある間違い・紛らわしいポイント
【「*」と「+」の違い】
「*」は0回以上の繰り返しを表すため、対象の文字が一度も現れなくても一致します。「+」は1回以上の繰り返しなので、少なくとも1回は現れなければ一致しません。「a*」は空文字列にも一致しますが、「a+」は空文字列には一致しないという違いを試験でよく問われます。
【「.」が「任意の1文字」である点】
「.」はドット(ピリオド)の文字そのものではなく、任意の1文字(改行を除く)を表します。ドット文字そのものを表したい場合はバックスラッシュでエスケープして「\.」と書く必要があります。試験では「.」が「ドット1文字にのみ一致する」という誤った選択肢が用意されることがあります。
【「[]」内の「^」は否定】
「[^0-9]」は「0から9の数字以外の文字」を表します。「^」を文字列の先頭([]の外)に置く場合は「行頭」という意味になりますが、これはITパスポートの範囲を超えることが多いです。試験では「[^abc]」の「^」が否定を意味することを押さえておけば十分です。
まとめ・試験ポイント
- 正規表現=文字列のパターンを記号で表す記法
- 「.」=任意の1文字、「*」=0回以上の繰り返し、「+」=1回以上の繰り返し、「?」=0回または1回
- 「[]」=文字クラス(いずれか1文字に一致)、「[^]」=否定(その文字以外に一致)
- 用途=テキスト検索・置換・入力バリデーション
- 「*」は0回でも一致するが「+」は1回以上必要という違いが試験で頻出
- 試験では「この正規表現が一致する文字列はどれか」という読み取り問題が出る
学習した内容を試験形式で確認しよう。ITパスポート入門試験100問に挑戦できます。
入門試験100問に挑戦する