正規表現って、「記号ばっかりで意味わからない…」と感じてしまう方、本当に多いです。とくに Python を始めたばかりだと、見ただけでちょっと怖くなりますよね。でもご安心ください。正規表現は、よく使うパターンだけ押さえてしまえば、一気に“便利な道具”に変わります。
この記事では、初心者の方がつまずきやすい理由をていねいに拾いながら、今日からそのまま使える定番パターンだけをギュッと厳選して紹介しています。むずかしい専門用語はなるべく使わず、イメージしやすい図解風の説明や、短い Python の例も入れてあるので、「あ、こういうときに使うんだ!」とスッと理解していただけるはずです。
メールアドレスのチェック、数字だけの取り出し、文字の置き換えなど、実務でよく出てくるケースもちゃんとカバーしています。「正規表現が苦手…」という方でも、このページを読み終わるころには、きっと“なんか使えそう!”と感じてもらえると思いますので、どうぞ気楽に読み進めてみてください。
なぜ正規表現は難しく感じるのか?初心者のつまずきポイント
正規表現がむずかしく感じる一番の理由は、まず「記号だらけで意味が覚えにくい」というところだと思います。^ や $、\d など、普段の文章では絶対に出てこない記号が急に並ぶので、まるで暗号みたいに見えてしまうんですよね。しかも、1つ1つの記号にはちゃんと役割があるのに、それがパッとつながらない…。この“記号のとっつきにくさ”は多くの初心者がぶつかる壁です。
もうひとつの大きな理由は、「どの場面で使えばいいのかイメージできない」という点です。正規表現はとても便利なツールなのに、実際の作業と結びつかないと「これ、何のために覚えるんだろう…?」とモチベーションが下がりがちです。たとえばメールアドレスを判定したり、数字だけ抜き出したりといった実務的な用途を知らないまま勉強しようとしても、ただの記号集に見えてしまいます。
さらに、教科書や公式リファレンスはどうしても説明が抽象的で、「で、結局どう使うの?」がわかりづらいこともあります。初心者にとっては、具体例がないと意味がつかみにくいんですよね。こうした理由が重なって、正規表現は“なんとなく苦手…”と思われがちです。でも安心してください。実際は、よく使うパターンだけ覚えてしまえば十分に使いこなせますし、この記事ではその入口をやさしく案内していきます。
Pythonで最低限覚えるべき re の基本3つ(search / match / findall)
Pythonで正規表現を使うときにまず覚えておきたいのが、re モジュールにある search・match・findall の3つです。
この3つの動きを理解しておくと、「どれを使えばいいんだっけ?」と迷う時間が一気に減ります。しかも、用途ごとに役割がハッキリしているので、暗記というより“使い分けのコツ”として覚えたほうがラクなんです。
search:文中から「最初の1か所」を探す
文章の中にパターンが含まれているかを確認したいときに使います。
たとえば「この文章のどこかに数字がある?」というチェックにピッタリです。
最初に見つかった1件だけを返してくれるので、“とりあえず見つかればOK”という場面向きです。
match:先頭が一致するか確認したいとき
文章の 先頭部分 が特定の形になっているかを調べたいときに使います。
たとえば「この文字列は数字から始まっている?」みたいな判定です。
先頭以外は見てくれないので、用途がはっきりしていて覚えやすいのが特徴です。
findall:全部まとめて取り出したいとき
文章中にあるパターンを すべてリストで取り出す のがこのメソッド。
「文章の中にある数字を全部抜き出したい」「URLを全部拾いたい」みたいな用途に使うと最強です。
データ整理やテキスト処理でもいちばん出番が多いメソッドなので、使えるようになると一気に作業がラクになります。
3つの使い分けを単純にまとめると…
この3つを“用途ごとにひもづけて覚える”のが、初心者の方にはいちばんおすすめです。
「どれを選べばいいかわからない…」という悩みがほぼ消えるので、正規表現のハードルがグッと下がりますよ。
すぐ使える!厳選「正規表現の定番パターン」10選(コピペOK)
ここでは、初心者の方でも そのまま実務で使いやすい“定番パターン”だけを10個に絞って紹介します。
メールアドレス判定
もっとも出番の多いパターンです。「@ があるか」「ドメインらしい形か」をざっくりチェックします。
[\w\.-]+@[\w\.-]+\.\w+
数字だけ抽出(半角数字)
数字を全部抜き出すときの王道パターンです。
\d+
カタカナだけを取り出す
日本語処理でよく使うパターンです。
[ァ-ヶー]+
ひらがな・漢字の抽出
名前チェックなどで重宝します。
[ぁ-ん]+
[一-龥]+
特定文字の置き換え(例:空白をアンダーバーに)
正規表現の置き換えは re.sub() とセットで覚えると便利です。
re.sub(r"\s+", "_", text)
先頭・末尾の判定
文章の“始まり”と“終わり”をチェックするときの基本。
^abc
xyz$
連続した空白の除去
スペースが並ぶと困る場面でよく使います。
\s+
URL抽出
文章の中から URL を拾いたいときの実務パターン。
https?://[^\s]+
よく使う基本記号の図解
数字を全部抜き出すと正規表現の“記号の意味”がわかると、どんなパターンも応用しやすくなります。きの王道パターンです。
| 記号 | 意味 |
|---|---|
. | なんでも1文字 |
+ | 1回以上くり返す |
* | 0回以上くり返す |
? | 0 or 1 回 |
[] | どれか1文字(範囲指定) |
^ | 先頭 |
$ | 末尾 |

正規表現は“全部覚える”必要はなくて、こうした よく使う10個をストックしておくだけで8割の作業が片付く ようになります。
また、試しながら覚えたい方は 無料の正規表現チェッカー(Webツール) を使うと、どこが間違っているかすぐ見えて便利です。
初心者がつまずく「よくある失敗例」と回避方法
正規表現を使い始めたばかりの頃に起きやすいミスは、実はどれもパターンが決まっています。しかも、原因がわかればすぐに直せるものばかりです。ここでは特に多い3つを取り上げて、「なぜ失敗するのか」「どう直せばいいのか」をやさしく整理していきます。
バックスラッシュのエスケープ忘れ
Python では \d や \s のようにバックスラッシュを使うのですが、普通の文字列として書くと Python 側が先に解釈してしまい、思った動きにならないことがあります。
初心者の方がほぼ必ずつまずくポイントで、「なんでマッチしないの!?」の原因 No.1 です。
パターンを書くときは 必ず r"..." の“生文字列”を使う のがおすすめです。
これだけでエスケープ問題の8〜9割は防げます。
全角数字を想定していない
\d は「半角数字」にしか反応しません。
日本語の文章では全角の「1」「2」「3」が混ざっていることが多く、これが原因でマッチしないケースが頻発します。「正規表現のせい」ではなく、「文字の種類が違う」だけなんです。
文章処理では“全角・半角のそろえ”がかなり大事です。
マッチしない原因の9割は「想定外の文字」
正規表現そのものが間違っているのではなく、データ側に知らない文字が入っているという理由で失敗することもとても多いです。
たとえば見えない空白(全角スペース、タブ)、思わぬ記号、コピー時に紛れた特殊文字などが原因になります。
「正規表現が悪い」のではなく、「データのほうがクセ強いだけ」というケース、実はめちゃくちゃ多いです。
補足:無料でできる“失敗防止”ツール
VSCode の検索には 正規表現モード があり、どこがマッチしているか色で教えてくれるので、初心者でも原因がすぐ探せます。追加料金も不要で使えるのでとてもおすすめです。
今日から迷わない!用途別おすすめパターン一覧表
ここまでで、よく使う正規表現の意味や具体的な使い方がひと通りつかめてきたと思います。でも、実務で作業していると「えっと、この場合はどのパターンだっけ…?」と手が止まってしまうことがあります。そこで最後に、用途別にすぐ引ける“保存版まとめ表” を置いておきます。あとから見返すときのチートシートとして使っていただければうれしいです。
抽出(取り出したいとき)
| 用途 | パターン例 |
|---|---|
| 数字を全部取り出す | \d+ |
| カタカナだけ抜く | [ァ-ヶー]+ |
| URL を拾う | https?://[^\s]+ |
| 漢字・ひらがな抽出 | [一-龥]+ / [ぁ-ん]+ |
判定(チェックしたいとき)
| 用途 | パターン例 |
|---|---|
| メールアドレスかざっくり判定 | [\w\.-]+@[\w\.-]+\.\w+ |
| 先頭が特定文字か確認 | ^abc |
| 末尾が特定文字か確認 | xyz$ |
| 電話番号(ハイフンあり) | \d{2,4}-\d{2,4}-\d{3,4} |
置換(キレイに整形したいとき)
| 用途 | パターン例 |
|---|---|
| 空白が連続しているところを1つに | \s+ |
| 特定の記号をまとめて別文字に | re.sub(r"[!?#]", "_", text) |
使いこなしのポイント
使いこなしのポイント
よくある質問
- Q正規表現って全部覚えないと使えませんか?
- A
いえ、大丈夫です!よく使うパターンだけ覚えれば実務はほぼ回ります。この記事にある10パターンで十分スタートできます。
- Q
searchとmatchの違いがよくわからないんですが…? - A
searchは「文章のどこでも OK」、matchは「先頭だけ」。
この1行だけ覚えておけばバッチリです。
- Qパターンを書いてもマッチしないのはなんで?
- A
理由のほとんどは 想定外の文字が混ざっている からです。
全角スペース、全角数字、見えないタブなどが犯人のことが多いです。
- Qバックスラッシュが多すぎて混乱します…
- A
Python は
\dなどのバックスラッシュを特別扱いするため、混乱しやすいです。r"..."を付けた生文字列 を使うだけで一気にラクになりますよ。
- Q全角数字にも対応したいときはどうすれば?
- A
[0-90-9]のように全角と半角の両方を入れるか、前処理で半角へ変換するのがおすすめです。
- Q正規表現って遅いって聞いたんですが本当ですか?
- A
大量データでは少し遅くなることもありますが、普通の業務レベルならほとんど気にしなくて大丈夫です。
まずは「便利に使う」が優先で OK です。
- Qもっと複雑なパターンを作りたいときは?
- A
まずは基本記号(
+、*、?、[]など)を使いこなしつつ、足りない部分だけ追加で学べば OK。
全部を一気に覚える必要はありません。
- Qコピペしたコードがうまく動かないのはなぜ?
- A
ブラウザのコピペで“見えない文字”が入ることがあります。
VSCode の正規表現検索を使うと、どこがマッチしないかすぐ分かります。
- Q正規表現が難しいと思うとき、どう練習すればいいですか?
- A
無料の正規表現チェッカー(Webツール)にいろいろ入力してみるのが一番早いです。
“結果が目で見える”ので理解が一気に進みます。
- Q実務ではどんなときに正規表現が役立つんですか?
- A
メールチェック、数字抽出、ログ解析、ファイル名整理など、ちょっとしたテキスト処理のほとんどに使えます。
慣れてくると「使わないほうが逆に面倒」になるくらい便利です。
