1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

これで分かる!正規表現の基本から実践まで

Last updated at Posted at 2025-09-18

はじめに

この記事では、正規表現の基本から実用例までを一気に整理します。
「正規表現って難しそう…」と感じている方でも、代表的な記号と使い方を押さえればすぐに使えるようになります。

1. 正規表現とは?

正規表現(Regular Expression, regex)とは 「文字列の条件を指定するためのルール」 です。
「ある文字列の中から特定のパターンを探したい」ときに強力な武器になります。

例:

  • 正規表現: abc
  • 対象文字列: "123abc456"
  • abc にマッチする

2. 基本の考え方:完全一致と部分一致

  • 完全一致
    パターン全体と文字列全体が一致することを指します。
    例: ^abc$"abc" にのみ一致します。

  • 部分一致
    文字列の一部がパターンに合致すればOK。
    例: abc"123abc456" の「abc」に一致します。

正規表現は「検索」や「抽出」に使う場面が多いため、部分一致を理解すると便利です。

3. よく使うメタ文字・記号

代表的なものを押さえると一気に使いやすくなります。

記号 意味
. 任意の1文字(改行を除く) a.c"abc", "axc" に一致
* 直前の文字が0回以上繰り返す a*"", "a", "aaa"
+ 直前の文字が1回以上繰り返す a+"a", "aaa"
? 直前の文字が0回または1回 a?"", "a"
{n,m} 直前の文字がn~m回繰り返す a{2,4}"aa", "aaa", "aaaa"
[abc] a または b または c [cb]at"cat", "bat"
[^abc] a, b, c 以外の1文字 [^0-9] → 数字以外
[0-9] 0から9のいずれかの数字 [0-9]{3} → 数字3桁
^ 行頭を表す ^Hello"Hello world" に一致
$ 行末を表す world$"Hello world" に一致
(abc) グループ化(キャプチャも可能) (abc)+"abcabc"
(?:abc) グループ化のみ(キャプチャなし)
\ 特殊記号を普通の文字として扱う \."." に一致

4. 便利な特殊シーケンス

よく使うショートカットを覚えると効率的です。

シーケンス 意味
\d 数字(0-9と同じ) \d{3}"123"
\D 数字以外 \D+ → "abc!"
\s 空白(スペース・タブなど) a\sb → "a b"
\S 空白以外 \S+ → "hello"
\w 単語構成文字(英数字+アンダーバー) \w+ → "word_123"
\W \w以外 \W+ → "!? "
\b 単語の境界 \bcat\b"the cat sat"

5. 実用サンプル集

メールアドレスのチェック

^[\w._%+-]+@[\w.-]+\.[a-zA-Z]{2,}$

電話番号の抽出(ハイフンあり)

\d{2,4}-\d{2,4}-\d{4}

日付フォーマットの検出(YYYY/MM/DD)

\d{4}/\d{2}/\d{2}

HTMLタグを取り除く(簡易版)

<[^>]+>

特定キーワードを含む行の抽出(例: "ERROR")

^.*ERROR.*$

6. 正規表現を使うときの注意点

  • 複雑化は避ける
    1行で書こうとすると読みにくくなります。必要なら分解しましょう。
    例: 長いパターンをグループごとに分けてコメントを付ける。

  • パフォーマンスに注意
    一部のパターンは「バックトラッキング」と呼ばれる仕組みで遅くなることがあります。
    例: .*.* のような曖昧すぎるパターンは避ける。

  • 可読性の工夫
    コメント付き正規表現(PythonやPerlの re.VERBOSE)を使うと見やすくなります。
    例: 改行やインデントを使って複数行で書ける。

  • 言語ごとの差異
    JavaScriptとPythonでは一部挙動が異なります。利用する環境の仕様を確認しましょう。
    例: Pythonの \d はUnicode数字全般にマッチするが、JavaScriptは0-9のみ。

7.regex101で正規表現を試してみよう

今回は、無料で使える regex101を使って、簡単な例を試してみます。
まずはテキストに画像のような文章を入れてください。
スクリーンショット 2025-09-17 164218.png

その次に
正規表現を入力してみましょう。

\d+

image.png

  • \d は「数字(0〜9)」
  • +は「1文字以上続く」

つまり 「数字が1文字以上並んでいる部分を全部探す」 という意味です。
実際に regex101 に入力すると、すべての数字が青くハイライトされます。

次に、郵便番号っぽい「3桁-4桁」の形式だけを探してみましょう。

\d{3}-\d{4}

image.png
こんな感じで3桁4桁の番号が取れます。

まとめ

正規表現は最初は難しく感じますが、「ちょっと試して結果を見る」 を繰り返すことで、だんだん使えるようになります。
ぜひ regex101 を開いて、この記事の例を試してみてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?