基本的な正規表現一覧

基本的な正規表現

基本的な正規表現
文字説明正規表現の例マッチする例
.任意の1文字 にマッチします。.
+直前の文字が 1回以上 繰り返す場合にマッチします。
最長一致。条件に合う最長の部分に一致します。
go+glegogle
go...gle
*直前の文字が 0回以上 繰り返す場合にマッチします。
最長一致。条件に合う最長の部分に一致します。
go*gleggle
go...gle
?直前の文字が 0個か1個 の場合にマッチします。
最長一致。条件に合う最長の部分に一致します。
go?gleggle
gogle
+?直前の文字が 1回以上 繰り返す場合にマッチします。
最短一致。条件に合う最短の部分に一致します。
go+?glegogle
go...gle
*?直前の文字が 0回以上 繰り返す場合にマッチします。
最短一致。条件に合う最短の部分に一致します。
go*?gleggle
go...gle
??直前の文字が 0個か1個 の場合にマッチします。
最短一致。条件に合う最短の部分に一致します。
go??gleggle
gogle
|いずれかの条件 (OR条件) として使われます。goog(le|ol)google
googol
\直後の正規表現記号を エスケープ します。go\+glego+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
定義済みの正規表現
文字説明対応する表現
\tタブ(なし)
\r改行。CR(Carriage Return:0x0D)(なし)
\n改行。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]
特定の位置関係の正規表現
文字説明正規表現の例マッチする例
^直後の文字が行の 先頭 にある場合にマッチします。^googlegoogle...
$直前の文字が行の 末尾 にある場合にマッチします。google$...google
\<単語の先頭にマッチします。\<*google
\>単語の末尾にマッチします。\>google*
\b単語の先頭か末尾にマッチします。\b*google*
\B単語の先頭か末尾以外にマッチします。\Bgoogle
\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

var regex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
regex.test("murashun@gmail.com");
Javascript の正規表現例

Python

#!/usr/bin/env python
import re

rep = r'^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$'
email = 'murashun@gmail.com'
is_email = re.match(rep, email) is not None

print(isEmail);
Python の正規表現例

Java

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        String regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
        String email = "murashun@gmail.com";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(email);
        Boolean isEmail = matcher.matches();

        System.out.println(isEmail);
    }
}
Java の正規表現例

Ruby

#!/usr/bin/env ruby

rep = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
isEmail = rep =~ "murashun@gmail.com"
puts isEmail
Ruby の正規表現例

Perl

#!/usr/bin/env perl

$rep = '^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$';
$email = 'murashun@gmail.com';
if ($email =~ /$rep/) {
    print "valid";
} else {
    print "invalid";
}
Perl の正規表現例

修飾子一覧

/i
大文字と小文字を区別しません。
/o
式の展開 (正規表現のコンパイル) を一度だけ行います。
/x
パターンの空白やコメントを無視します。
/m
対象の文字列を複数行として扱います。. が改行にもマッチします。
/g
繰り返しマッチを行います。
/e
置換を行った結果を式として処理します。

まとめ

正規表現についてのチートシートです。正規表現の書き方を忘れた場合にご活用ください。

Category:
プログラミング
公開日:
更新日:
Pageviews:
120,411
Shares:
37
Tag:
正規表現