【せいきひょうげん】

正規表現 とは?

最終更新:
💡 文字列の「パターンマッチング」を記号で表現する

文字列に一致させたいパターンを記号で表す仕組み。検索・置換・入力形式のチェックなどに使う。使える記法や一致の条件は言語・エンジン・フラグによって異なる。

📌 このページのポイント
入力全体がパターンに合うか確認 /^[0-9]{3}-[0-9]{4}$/ ^ 先頭 [0-9] 数字 {n} n回 $ 末尾 123-4567 ✓ 一致 〒123-4567 × 不一致 前後に別の文字があると一致しない
JavaScript・フラグなしの例。数字3桁+ハイフン+数字4桁という形を確認し、郵便番号の実在は確認しない。
ひよこ ひよこ
正規表現は何に使うの?
ペンギン先生 ペンギン先生
ログからパターンに合う部分を探したり、日付表記を置換したり、入力の形式を確認したりするよ。文字列の中の一部分を探すのか、入力全体が条件に合うかを見るのかを先に決めると分かりやすいんだ。
ひよこ ひよこ
基本の記号を教えて!
ペンギン先生 ペンギン先生
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と略すことがある。文字列のパターンを表す用語で、「正規」は入力が正しいことを保証する意味ではないよ

参考資料

← 用語集にもどる