基本的な正規表現一覧

基本的な正規表現

基本的な正規表現
文字説明正規表現の例マッチする例
.任意の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挟まれた文字列を大文字に変換します。

使用頻度の高い正規表現式

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:
537
Shares:
12
Tag:
正規表現
hatebu icon
hatebu