【せいきひょうげん】

正規表現 とは?

💡 文字列の「パターンマッチング」を記号で表現する
📌 このページのポイント
正規表現のパターンマッチ パターン: /[0-9]{3}-[0-9]{4}-[0-9]{4}/ 入力テキスト: 電話番号は 090-1234-5678 です マッチ! メールは test@example.com です 不一致 よく使う正規表現の記号 . 任意の1文字 * 0回以上 + 1回以上 [a-z] 文字クラス ^ $ 先頭/末尾 {n} n回繰返し
正規表現のイメージ
ひよこ ひよこ

正規表現って何に使うの?

ペンギン先生 ペンギン先生

代表的な用途は3つ。①検索(ログから特定パターンのエラーを抽出)、②置換(日付フォーマットの一括変換)、③バリデーション(入力がメールアドレスの形式か判定)。VSCodeの検索でも正規表現が使えるから、エンジニアでなくても覚えると便利だよ

ひよこ ひよこ

基本的な記号を教えて!

ペンギン先生 ペンギン先生

「.」=任意の1文字、「*」=直前の文字の0回以上繰り返し、「+」=1回以上繰り返し、「?」=0回か1回、「^」=行頭、「$」=行末、「[abc]」=a,b,cのいずれか、「\d」=数字1文字、「\w」=英数字。例えば「^\d{3}-\d{4}$」で「123-4567」のような郵便番号パターンにマッチするよ

ひよこ ひよこ

正規表現が難しく感じる…

ペンギン先生 ペンギン先生

最初から完璧なパターンを書こうとしないこと。まず単純なパターンを書いて、regex101.comのようなオンラインツールでテストしながら段階的に精度を上げるのがコツ。また、名前付きキャプチャ「(?pattern)」を使うと可読性が上がるよ

ひよこ ひよこ

正規表現のアンチパターンは?

ペンギン先生 ペンギン先生

「メールアドレスの完全な検証を正規表現だけでやろうとする」は典型的な罠。RFC準拠の完全な正規表現は数千文字になる。実用的には「@があって、ドメイン部分がそれっぽい」程度で十分。あと、カタストロフィックバックトラッキング(特定パターンで処理が指数的に遅くなる)はReDoS攻撃の原因になるから要注意だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「正規表現」って出てきたら「文字列パターンを記号で表す検索・置換の技法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Regular Expression(regex / regexp)」 = 正規表現
💬 数学の形式言語理論が起源。「正規」は数学用語で「規則的な」という意味だよ
← 用語集にもどる