正規表現とは
文字列のパターンを表現するための特別な文字列
使用例
文字列の検索・抽出、Webスクレイピング
- ログファイルの「エラー行」
- メールアドレス
- 電話番号
- 日付
- 郵便番号
- URL
- HTMLタグなど
置換・修正
- 文章中の機密情報(例:クレジットカード番号)をマスキング
- 改行コードの統一(
\r\n
→ \n
)
- タグの除去(例:HTMLタグを削除)
入力時のバリデーション(検証)
- メールアドレスの形式確認
- パスワードの条件確認(英数字混在、8文字以上など)
- 数値や日付の書式確認
よく使う正規表現の基本記号
文字の意味を指定する記号(メタ文字)
記号 |
意味 |
例 |
. |
任意の1文字 |
a.c → abc , acc などにマッチ |
^ |
行頭にマッチ |
^Hello → Hello で始まる行 |
$ |
行末にマッチ |
world$ → world で終わる行 |
* |
直前の文字が0回以上繰り返し |
a* → "" , a , aaa
|
+ |
直前の文字が1回以上繰り返し |
a+ → a , aa , aaa
|
? |
直前の文字が0回または1回 |
a? → "" , a
|
グループ・繰り返し・範囲
記号 |
意味 |
例 |
() |
グループ化 |
(ab)+ → ab , abab , ababab
|
[] |
指定した文字のいずれか |
[a-z] → a ~z のいずれか |
[^] |
含まない文字 |
[^abc] → a , b , c 以外 |
{n} |
ちょうどn回の繰り返し |
a{3} → aaa
|
{n,} |
n回以上 |
a{2,} → aa , aaa , ... |
{n, m} |
n~m回 |
a{2,4} → aa , aaa , aaaa
|
特殊文字クラス(便利な略記法)
記号 |
意味 |
例 |
\d |
数字([0~9] ) |
\d+ → 123 などの数字列 |
\D |
非数字 |
[^\d] と同じ |
\w |
単語構成文字(英数字 + アンダースコア) |
[a-zA-Z0-9_] |
\W |
非単語構成文字 |
[^\w] |
\s |
空白(スペース・タブ・改行など) |
\s + → 空白部分にマッチ |
\S |
非空白 |
[^\s] |
実例(よく使うパターン)
- メールアドレス
^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
- 郵便番号
- 日付(
yyyy/mm/dd
)
^[0-9]{4}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$
- 電話番号
^0[5789]0-[0-9]{4}-[0-9]{4}$
おすすめチェッカーツール
- 正規表現チェッカー WWW-Creators!
- Rubular
- Debuggex
- PHP, Javascirpt, Python対応
まとめ
正規表現とは、文字列のパターンを記述するための表現方法で、検索・抽出・置換・バリデーションなど幅広く活用されます。基本記号や便利な略記法を使うことで、複雑な文字列処理を簡潔に記述できます。