この記事で解決すること

「正規表現って何?難しそう…」

正規表現は「文字のパターンを指定する書き方」です。よく使う7パターンだけ覚えれば、検索や置換が劇的に楽になります。

正規表現とは

正規表現(Regular Expression、略してregex)は、「こういうパターンの文字列を探して」と指定するための書き方です。

例えば「メールアドレスっぽい文字列を全部探して」「電話番号の形式になっているものだけ抽出して」といったことができます。

よく使うパターン7選

1. .(任意の1文字)

a.c → abc, adc, a1c, a c にマッチ

. はどんな文字でも1文字にマッチします。

2. *(0回以上の繰り返し)

ab*c → ac, abc, abbc, abbbc にマッチ

直前の文字が0回以上繰り返されるパターンにマッチします。

3. +(1回以上の繰り返し)

ab+c → abc, abbc, abbbc にマッチ(acにはマッチしない)

* と似ていますが、最低1回は必要です。

4. \d(数字1文字)

\d\d\d → 123, 456, 789 にマッチ

\d は0〜9の数字1文字にマッチします。

5. [](文字クラス)

[abc] → a, b, c のどれか1文字にマッチ
[0-9] → 0〜9の数字にマッチ(\dと同じ)
[a-z] → 小文字のアルファベットにマッチ

6. ^$(行頭と行末)

^Hello → 行頭が「Hello」で始まる行にマッチ
world$ → 行末が「world」で終わる行にマッチ

7. ()(グループ化)

(abc)+ → abc, abcabc, abcabcabc にマッチ

複数の文字をまとめて繰り返しの対象にできます。

実践例

メールアドレスを探す

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

複雑に見えますが、分解すると:

  • [a-zA-Z0-9._%+-]+ → @の前の部分
  • @ → @マーク
  • [a-zA-Z0-9.-]+ → ドメイン名
  • \.[a-zA-Z]{2,} → .com や .jp の部分

電話番号を探す

0\d{1,4}-\d{1,4}-\d{4}
  • 0 → 最初の0
  • \d{1,4} → 1〜4桁の数字
  • - → ハイフン

空白行を削除する(VS Codeの置換)

検索:^\s*$\n 置換:(空欄)

どこで使えるか

  • VS CodeCtrl + H で置換、正規表現ボタンをオン
  • Excel → VBAで使える
  • Pythonre モジュール
  • JavaScriptRegExp オブジェクト
  • grep → ターミナルでのファイル検索

まとめ

  • 正規表現は「文字のパターンを指定する書き方」
  • . * + \d [] ^$ () の7つを覚えれば十分
  • VS Codeの検索・置換で使うのが一番手軽
  • 最初は簡単なパターンから試してみる

あわせて読みたい

関連リソース

正規表現をもっと学びたい方へ: