この記事で解決すること
「正規表現って何?難しそう…」
正規表現は「文字のパターンを指定する書き方」です。よく使う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 Code →
Ctrl + Hで置換、正規表現ボタンをオン - Excel → VBAで使える
- Python →
reモジュール - JavaScript →
RegExpオブジェクト - grep → ターミナルでのファイル検索
まとめ
- 正規表現は「文字のパターンを指定する書き方」
.*+\d[]^$()の7つを覚えれば十分- VS Codeの検索・置換で使うのが一番手軽
- 最初は簡単なパターンから試してみる
あわせて読みたい
関連リソース
正規表現をもっと学びたい方へ:
リンク