前書き
正規表現を使用する場面はよくあります。
一部の正規表現はよく使うため覚えていますが、覚えていない正規表現も多く、都度調べることになっています。
そこで、正規表現の全体像をまとめてみました。
正規表現
1. 基本的な正規表現
記号 | 意味 | 正規表現の例 | マッチする例 |
---|---|---|---|
. |
任意の1文字 | ab.d | abcd abed |
+ |
直前の文字の1回以上の繰り返し 最長一致(条件に合う一番長い部分に一致する) |
abc+d | abcd abccd |
* |
直前の文字の0回以上の繰り返し 最長一致(条件に合う一番長い部分に一致する) |
abc*d | abd abcd abccd |
? |
直前の文字が0個~1個の繰り返し 最長一致(条件に合う一番長い部分に一致する) |
abc?d | abd abcd |
+? |
直前の文字の1回以上の繰り返し 最短一致(条件に合う一番短い部分に一致する) |
abc+?d | abcd abccd |
*? |
直前の文字の0回以上の繰り返し 最短一致(条件に合う一番短い部分に一致する) |
abc*?d | abd abcd abccd |
?? |
直前の文字が0個~1個の繰り返し 最短一致(条件に合う一番短い部分に一致する) |
abc??d | abd abcd |
~ |~
|
|の左右の文字列のいずれか(~または~) | abcd(ef|gf) | abcdef abcdgf |
\ |
直後の正規表現記号をエスケープする | ab\+d |
ab+d |
[ ~ ] |
[ ]の中のどれか1文字 | [abc] [a-c] |
a, b, c |
[^ ~ ] |
[ ]の中に無い1文字 | [^abc] [^a-c] |
a, b, c以外の文字 |
( ~ ) |
( )内を1文字扱い(1つのグループにまとめる) | abcd(ef|gf) | abcdef abcdgf |
{n} |
直前の文字のn回の繰り返し | a{3} | aaa |
{n,} |
直前の文字のn回以上の繰り返し | a{3,} | aaa aaaa... |
{min,max} |
直前の文字のmin以上max以下の繰り返し(min、maxは省略可能) 最長一致(条件に合う一番長い部分に一致する) |
a{3,4} | aaa aaaa |
{min,max}? |
直前の文字のmin以上max以下の繰り返し(min、maxは省略可能) 最短一致(条件に合う一番短い部分に一致する) |
a{3,4} | aaa aaaa |
2. 定義済みの正規表現
記号 | 意味 | 対応する表現 |
---|---|---|
\t |
タブ | (なし) |
\r |
改行。CR(Carriage Return:0x0D) | (なし) |
\n |
改行。LF(Line Feed:0x0A) | (なし) |
\d |
数字1文字 | [0-9] |
\D |
数字以外の1文字 | [^0-9] |
\s |
半角スペース、タブ、改行のどれか1文字 | [ \t\f\r\n] |
\S |
半角スペース、タブ、改行以外の1文字 | [^ \t\f\r\n] |
\w |
アルファベット、数字、アンダスコア( _ )のどれかの1文字 | [a-zA-Z_0-9] |
\W |
アルファベット、数字、アンダスコア以外の1文字 | [^a-zA-Z_0-9] |
3. 特定の位置関係の正規表現
記号 | 意味 |
---|---|
^ |
行の先頭 |
$ |
行の末尾 |
\< |
単語の先頭 |
\> |
単語の末尾 |
\b |
単語の先頭か末尾 |
\B |
単語の先頭、末尾以外 |
\A |
ファイルの先頭 |
\z |
ファイルの末尾 |
\G |
直前の一致文字列の末尾 |
4. 置換文字列で使える正規表現
記号 | 意味 |
---|---|
\0 |
一致した文字列全体 |
\1 \2 … \9 |
それぞれ検索文字列の1~9番目の ( ) に一致した文字列 |
\l |
次の1文字を小文字にする |
\L...\E |
挟まれた文字列を小文字にする |
\u |
次の1文字を大文字にする |
\U...\E |
挟まれた文字列を大文字にする |
5. よく使う正規表現式
名称 | 正規表現 |
---|---|
Email アドレス (RFC準拠ではない) |
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ |
URL | ^https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ |
ドメイン名 | ^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z-]{2,}$ |
日付 (YYYY-MM-DD形式) | ^\d{4}-\d\d-\d\d$ |
桁区切りカンマ付数字 | \b\d{1,3}(,\d{3})*\b |
固定電話番号 |
^0\d(-\d{4} |\d-\d{3} |\d\d-\d\d |\d{3}-\d)-\d{4}$
|
携帯電話番号 | ^0[789]0-\d{4}-\d{4}$ |
IP 電話番号 | ^050-\d{4}-\d{4}$ |
フリーダイヤル |
^(0120 |0800)-\d{3}-\d{3}$
|
郵便番号 | ^\d{3}-\d{4}$ |
以上