正規表現は、読んで覚えるより当てて覚えるほうが早いです。
入力したそばから、一致した場所が光る実験台を作りました。
グループは色分けされ、パターンは日本語に読み下されます。
さらに、置換の結果をその場で確かめられ、8問の練習問題で腕試しもできます。
好きな問題を選んで、当てはまる正規表現を書いてみてください。
PARTS LIST /目次
使い方
- 上の枠に正規表現、左下の枠に試したい文字列を入れます。打つたびに結果が変わります
- g i m s はフラグです。gは全部探す、iは大文字小文字を無視、mは
^ $を行ごとに、sは.を改行にも一致させます - 右の「→」の枠に置換後の文字列を入れると、置き換えた結果が下に出ます。
$1や$<name>が使えます - 右上に一致した文字列・位置・グループの中身が並びます
- 右下は、いま書いているパターンを1記号ずつ日本語に直したものです
- 「よく使うパターンを選ぶ」から、メール・URL・日付・郵便番号・HTMLタグなどを呼び出せます
練習問題(8問)
右下の「練習問題」から選ぶと、お題の文章に入れ替わります。
書いた正規表現の一致がお手本とぴったり同じになれば正解です。
- 3桁ちょうどの数字を取り出す(
\bの練習) - 郵便番号だけを取り出す(桁数の固定)
- メールアドレスを取り出す(文字クラス)
- httpsのURLだけ(httpを除く)
- 行頭が
#の行(mフラグ) - 「さん」の前の名前だけ(先読み
(?=...)) - 同じ語の繰り返し(後方参照
\1) - HTMLタグを1つずつ(貪欲を避ける)
判定は「何個一致したか」ではなく、一致した文字列そのものを突き合わせています。
数だけ合っていても、違う場所を拾っていれば×になります。
手を動かす順番のおすすめ
\dだけを入れて、数字が1文字ずつ光るのを見る\d+にして、数字のかたまりに変わるのを見る\d{4}で4桁だけに絞る(\d{4})-(\d{2})のように括弧で囲み、右側に$1$2が出るのを見る(?<year>\d{4})と名前を付けて、year=2026に変わるのを見る- 置換の枠に
$<year>年と入れて、文章が置き換わるのを見る
この2つの役割が同時にあることが、最初の混乱のもとになります。
取り出す必要がないときは (?:...) を使う、と覚えておくと後で楽になります。
早見表
つまずきやすいところ
- 貪欲と最短:
<.+>はタグ1つではなく、行の端から端まで飲み込みます。<.+?>にすると最短で止まります ^$は行ではない:既定では文字列全体の先頭と末尾です。行ごとに判定したいときは m フラグを付けます.は改行に当たらない:複数行をまたいで取りたいときは s フラグが要ります- 記号はエスケープが必要:
.?+([などをそのままの文字として探すときは\.のように書きます - 爆発するパターンがある:
(a+)+$のような書き方は、当たらない文字列に対して候補が指数的に増え、実行が終わらなくなります(catastrophic backtracking)。このページでは照合を別スレッドで実行し、1.5秒で中断して警告を出します。実際に入れてみると、その挙動が確かめられます
貪欲マッチと最短マッチ(gフラグ)
<.+>一致 1件
<.+?>一致 4件
<.+> は端から端までを1件で飲み込み、<.+?> はタグを1つずつ取り出す。
※文字列は説明用の例です。色の帯が一致した範囲(下は1件ごとに色を交互に表示)。
正規表現は、覚える記号の数より「試した回数」で身に付きます。
8問を全部○にしてから、手元のログやCSVを貼り付けてみてください。

