1. 基本的な正規表現
    1. 特殊文字
    2. 位置
    3. 後方参照
  2. 最短一致と最長一致
  3. 正規表現のサンプル一覧
  4. 使用頻度の高い正規表現式
  5. 言語別の正規表現一覧
  6. 修飾子一覧
基本的な正規表現
文字 説明 正規表現の例 マッチする例
. 任意の1文字 にマッチ .
*? 直前の文字が 0回以上 繰り返す場合にマッチ
  最短一致 。条件に合う最短の部分に一致
go*?gle ggle
*  最長一致 。条件に合う最長の部分に一致 go*gle go...gle
?? 直前の文字が 0個か1個 の場合にマッチ
  最短一致 。条件に合う最短の部分に一致
go??gle ggle
?  最長一致 。条件に合う最長の部分に一致 go?gle gogle
+? 直前の文字が 1回以上 繰り返す場合にマッチ
  最短一致 。条件に合う最短の部分に一致
go+?gle gogle
+  最長一致 。条件に合う最長の部分に一致 go+gle go...gle
| いずれかの条件 (OR条件) goog(le|ol) google
googol
\ 退避修飾(エスケープ)
正規表現記号の有効/無効の制御
\の次にある正規表現記号を普通の文字として扱う
go\+gle go+gle

\ アルファベット文字等と組み合わせて特殊な意味を表現 特殊文字 位置 後方参照
[...] 角括弧に含まれる いずれか1文字 にマッチ [abc]
[a-c]
a, b, c
[^...] 角括弧に含まれる 文字以外 にマッチ [^abc]
[^a-c]
a, b, c
以外の文字
(...) 文字を1つのグループに まとめる goog(le|ol) google
googol
{n} 直前の文字の 桁数を指定 a{3} aaa

{n,} 直前の文字の 最短桁数のみ指定 a{3,} aaa
aaaa...
{n,m}  最長一致 。条件に合う最長の部分に一致 a{3,4} aaa
aaaa
{n,m}? 直前の文字の 最短桁数と最長桁数を指定
  最短一致 。条件に合う最短の部分に一致
a{3,4}? aaa
aaaa

最短一致 最長一致
最短一致 最長一致
*? * 直前のパターンの0回以上の繰り返し
?? ? 直前のパターンが0回または1回現われる
+? + 直前のパターンの1回以上の繰り返し
{ n }? { n } 直前のパターンの n 回の繰り返し
{ n , m }? { n , m } 直前のパターンが n 回以上、 m 回以下
{ n ,}? { n ,} 直前のパターンの n 回以上の繰り返し
〔使用例〕
SAKURA_COLLBACKPROC_BREXP_PROC
という文字列中で
正規表現 [A-Z_]*?PROC にマッチするのは SAKURA_COLLBACKPROC

正規表現 [A-Z_]*PROC にマッチするのは SAKURA_COLLBACKPROC_BREXP_PROC
特殊文字
文字 説明 対応する表現
\t タブ (なし)
\r 改行。CR(Carriage Return:0x0D) (なし)
\n 改行。LF(Line Feed:0x0A) (なし)
[\r\n] 改行。CR(Carriage Return:0x0D)又はLF(Line Feed:0x0A) (なし)
\d すべての数字 [0-9]
\D すべての数字以外の文字 [^0-9]
\s 垂直タブ以外のすべての空白文字 [ \t\f\r\n]
\S すべての非空白文字 [^ \t\f\r\n]
\w アルファベット、アンダーバー、数字 [a-zA-Z_0-9]
\W アルファベット、アンダーバー、数字以外の文字 [^a-zA-Z_0-9]

位置
文字 説明 正規表現の例 マッチする例
^ 直後の文字が行の 先頭 にある場合にマッチ ^google google...
$ 直前の文字が行の 末尾 にある場合にマッチ google$ ...google
\< 単語の先頭にマッチ \< *google
\> 単語の末尾にマッチ \> google*
\b 単語の先頭か末尾にマッチ \b *google*
\B 単語の先頭か末尾以外にマッチ \B google
\A ファイルの先頭にマッチ \A (なし)
\z ファイルの末尾にマッチ \z (なし)
\G 直前の一致文字列の末尾にマッチ \G (なし)

後方参照
文字 説明
\0 一致した文字列全体に置換
\1 ~ \9 一致した文字列の1~9番目に対応する文字列に置換
\l 次の1文字を小文字に変換
\L...\E 挟まれた文字列を小文字に変換
\u 次の1文字を大文字に変換
\U...\E 挟まれた文字列を大文字に変換

正規表現のサンプル一覧
a から始まって z で終わる 3 桁の文字列
a.z
メタ文字 説明
. 任意の 1 文字。文字の種類には関係なく 1 文字に該当

a から始まって z で終わる 2 桁以上の文字列
a.*z
メタ文字 説明
. 任意の 1 文字。文字の種類には関係なく 1 文字に該当
* 直前のパターンを 0 回以上繰り返し

a から始まって z で終わる 3 桁以上の文字列
a.+z
メタ文字 説明
. 任意の 1 文字。文字の種類には関係なく 1 文字に該当
+ 直前のパターンを 1 回以上繰り返し

半角数字
\d
メタ文字 説明
\d 半角数字。それぞれ 1 文字ずつヒット

半角数字以外
\D
メタ文字 説明
\D 半角数字以外。スペースも含めそれぞれ 1 文字ずつヒット

4 桁の半角数字
\d{4}
メタ文字 説明
\d 半角数字以外。それぞれ 1 文字ずつヒット
{n} 直前のパターンを n 回繰り返し

4 桁以上の半角数字
\d{4,}
メタ文字 説明
\d 半角数字以外。それぞれ 1 文字ずつヒット
{n,} 直前のパターンを n 回以上繰り返し

1 ~ 4 桁の半角数字
\d{1,4}
メタ文字 説明
\d 半角数字以外。それぞれ 1 文字ずつヒット
{n,m} 直前のパターンを n ~ m 回以上繰り返し。最長一致なので、4 桁の数字列に優先してヒット

4 ~ 10 桁の半角数字 (最長一致)
\d{4,10}
メタ文字 説明
\d 半角数字以外。それぞれ 1 文字ずつヒット
{n,m} 直前のパターンを n ~ m 回以上繰り返し。最長一致なので、4 桁の数字列に優先してヒット

4 ~ 10 桁の半角数字 (最短一致)
\d{4,10}?
メタ文字 説明
\d 半角数字以外。それぞれ 1 文字ずつヒット
{n,m} 直前のパターンを n ~ m 回以上繰り返し。最長一致なので、4 桁の数字列に優先してヒット
? 直前の繰り返し指定を最短一致にする。できるだけ短い文字列にヒットしようと

桁区切りのカンマ付数字列
\b\d{1,3}(,\d{3})*\b
メタ文字 説明
\b 語の区切り文字
\d 半角数字以外。それぞれ 1 文字ずつヒット
{n,m} 直前のパターンを n ~ m 回以上繰り返し。最長一致なので、4 桁の数字列に優先してヒット
{n} 直前のパターンを n 回繰り返し
* 直前のパターンを 0 回以上繰り返し

半角英大文字
\u
メタ文字 説明
\u 半角英大文字

半角英大文字
\U
メタ文字 説明
\U 半角英大文字以外

半角英小文字
\l
メタ文字 説明
\l 半角英小文字

半角英小文字以外
\L
メタ文字 説明
\L 半角英小文字以外

半角英文字
[\u\l]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字
\u 半角英大文字
\l 半角英小文字

半角英文字以外
[^\u\l]
メタ文字 説明
[^ ] 括弧内に含まれない 1 文字
\u 半角英大文字
\l 半角英小文字

英単語(半角英文字列)
\b[\u\l]+\b
メタ文字 説明
\b 語の区切り文字
[ ] 括弧内のいずれか 1 文字
\u 半角英大文字
\l 半角英小文字
+ 直前のパターンを 1 回以上繰り返し

1 桁の偶数
[02468]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字

1 桁以上の偶数
\d*[02468]\b
メタ文字 説明
\d 半角数字。それぞれ 1 文字ずつヒット
* 直前のパターンを 0 回以上繰り返し
[ ] 括弧内のいずれか 1 文字
\b 語の区切り文字

1 桁の奇数
[13579]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字

1 桁以上の奇数
\d*[13579]\b
メタ文字 説明
\d 半角数字。それぞれ 1 文字ずつヒット
* 直前のパターンを 0 回以上繰り返し
[ ] 括弧内のいずれか 1 文字
\b 語の区切り文字

3 ~ 7 までの数字
[3-7]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字
- [ ] 内でのみ指定できる範囲指定のメタ文字

1 桁の 16 進数
[0-9A-Fa-f]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字
- [ ] 内でのみ指定できる範囲指定のメタ文字

1 桁の全角数字
[0-9]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字
- [ ] 内でのみ指定できる範囲指定のメタ文字

1 桁の全角英字
[A-Z]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字
- [ ] 内でのみ指定できる範囲指定のメタ文字

ひらがな
[ぁ-ん]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字
- [ ] 内でのみ指定できる範囲指定のメタ文字

カタカナ
[ァ-ヴ]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字
- [ ] 内でのみ指定できる範囲指定のメタ文字

半角カタカナ
[ヲ-゚]
メタ文字 説明
[ ] 括弧内のいずれか 1 文字
- [ ] 内でのみ指定できる範囲指定のメタ文字

改行
\n
メタ文字 説明
\n 改行文字。CRLF 改行、LF 改行にもヒットします

空白文字
\s
メタ文字 説明
\s 空白文字。半角スペース、タブ、改行文字のいずれかにヒットします(全角スペースにはヒットしない)

OR 条件
東京|大阪
メタ文字 説明
| OR 条件。A または B

行頭
^
メタ文字 説明
^ 行頭(ウィンドウ幅などで折り返した表示上の行頭は含まない)

行末
$
メタ文字 説明
$ 行末(ウィンドウ幅などで折り返した表示上の行末は含まない)

空白行
^\n
メタ文字 説明
^ 行頭(ウィンドウ幅などで折り返した表示上の行頭は含まない)
\n 改行文字。CRLF 改行、LF 改行にもヒットします

行全体
^.*$
メタ文字 説明
^ 行頭(ウィンドウ幅などで折り返した表示上の行頭は含まない)
. 任意の 1 文字。文字の種類には関係なく 1 文字に該当
* 直前のパターンを 0 回以上繰り返し
$ 行末(ウィンドウ幅などで折り返した表示上の行末は含まない)

使用頻度の高い正規表現式
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,}$
固定電話番号  …  ^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}$
日付 (YYYY-MM-DD形式)  …  ^\d{4}-\d\d-\d\d$
郵便番号  …  ^\d{3}-\d{4}$
Javascriptの正規表現例
  1. var regex=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
  2. regex.test("murashun@gmail.com");
Pythonの正規表現例
  1. #!/usr/bin/env python
  2. import re
  3. rep= r'^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$'
  4. email='murashun@gmail.com'
  5. is_email= re.match(rep, email)isnotNone
  6. print(isEmail);
Javaの正規表現例
  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. publicclassTest{
  4. publicstaticvoid main(String[] args){
  5. String regex="^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
  6. String email="murashun@gmail.com";
  7. Pattern pattern=Pattern.compile(regex);
  8. Matcher matcher= pattern.matcher(email);
  9. Boolean isEmail= matcher.matches();
  10. System.out.println(isEmail);
  11. }
  12. }
Rubyの正規表現例
  1. #!/usr/bin/env ruby
  2. rep=/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
  3. isEmail= rep=~"murashun@gmail.com"
  4. puts isEmail
Perlの正規表現例
  1. #!/usr/bin/env perl
  2. $rep='^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$';
  3. $email='murashun@gmail.com';
  4. if($email=~/$rep/){
  5. print"valid";
  6. }else{
  7. print"invalid";
  8. }
修飾子一覧
/i  …  大文字と小文字を区別しない
/o  …  式の展開 (正規表現のコンパイル) を一度だけ行う
/x  …  パターンの空白やコメントを無視
/m  …  対象の文字列を複数行として扱う。
   . が改行にもマッチ
/g  …  繰り返しマッチを行う
/e  …  置換を行った結果を式として処理
inserted by FC2 system