LoginSignup
3
1

More than 3 years have passed since last update.

正規表現 メモ

Last updated at Posted at 2019-12-08

前書き

正規表現を使用する場面はよくあります。
一部の正規表現はよく使うため覚えていますが、覚えていない正規表現も多く、都度調べることになっています。
そこで、正規表現の全体像をまとめてみました。

正規表現

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}$

以上

3
1
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
3
1