【せいきひょうげん】
正規表現 とは?
最終更新:
💡 文字列の「パターンマッチング」を記号で表現する
文字列に一致させたいパターンを記号で表す仕組み。検索・置換・入力形式のチェックなどに使う。使える記法や一致の条件は言語・エンジン・フラグによって異なる。
📌 このページのポイント
- 文字そのものと、文字の種類・繰り返しなどを表す記号を組み合わせる
- 検索・置換・入力形式のチェックなどに使われる
- JavaScriptの例では[0-9]は半角数字1文字、{3}は直前の要素を3回繰り返す
- 記法やフラグの違いを確認し、一致する例としない例で試す
正規表現は何に使うの?
ログからパターンに合う部分を探したり、日付表記を置換したり、入力の形式を確認したりするよ。文字列の中の一部分を探すのか、入力全体が条件に合うかを見るのかを先に決めると分かりやすいんだ。
基本の記号を教えて!
JavaScriptを例にすると、[0-9]は半角数字1文字、*は直前の要素を0回以上、+は1回以上繰り返す。要素には文字だけでなく文字クラスやグループも使えるよ。.は通常、改行を除く1文字に一致し、sフラグを付けると改行も対象になるんだ。
郵便番号の形ならどう書く?
JavaScriptなら /^[0-9]{3}-[0-9]{4}$/ で半角数字3桁・ハイフン・4桁の形を確認できるよ。ここではフラグなし。^と$で入力の先頭と末尾を指定しているので、前後に別の文字がある入力は一致しない。ただし、その郵便番号が実在するかは別の確認だね。
\dや\w、^と$はどこでも同じ?
言語や設定で違うので、その環境の資料を見よう。JavaScriptでは\dは[0-9]、\wは基本的に英字・数字・アンダースコア。^と$は通常入力の先頭・末尾で、mフラグを使うと各行の先頭・末尾にも一致するよ。
複雑にすれば正確になるの?
読みやすさと実行時間にも気を付けよう。バックトラッキングするエンジンでは、繰り返しの組み合わせと入力によって処理が非常に遅くなる場合がある。メールの形式チェックだけでは宛先の存在も確認できないので、目的に応じた検証を組み合わせよう。
まとめ:ざっくりこれだけ覚えればOK!
「正規表現」って出てきたら「文字列パターンを記号で表す検索・置換の技法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Regular Expression(regex / regexp)」 = 正規表現
💬 英語名をregexやregexpと略すことがある。文字列のパターンを表す用語で、「正規」は入力が正しいことを保証する意味ではないよ