基本的な正規表現
文字 | 説明 | 正規表現の例 | マッチする例 |
---|---|---|---|
. |
任意の1文字 にマッチします。 | . |
A あ |
+ |
直前の文字が 1回以上 繰り返す場合にマッチします。 最長一致。条件に合う最長の部分に一致します。 |
go+gle |
gogle |
* |
直前の文字が 0回以上 繰り返す場合にマッチします。 最長一致。条件に合う最長の部分に一致します。 |
go*gle |
ggle |
? |
直前の文字が 0個か1個 の場合にマッチします。 最長一致。条件に合う最長の部分に一致します。 |
go?gle |
ggle |
+? |
直前の文字が 1回以上 繰り返す場合にマッチします。 最短一致。条件に合う最短の部分に一致します。 |
go+?gle |
gogle |
*? |
直前の文字が 0回以上 繰り返す場合にマッチします。 最短一致。条件に合う最短の部分に一致します。 |
go*?gle |
ggle |
?? |
直前の文字が 0個か1個 の場合にマッチします。 最短一致。条件に合う最短の部分に一致します。 |
go??gle |
ggle |
| | いずれかの条件 (OR条件) として使われます。 | goog(le|ol) |
google |
\ |
直後の正規表現記号を エスケープ します。 | go\+gle |
go+gle |
[...] |
角括弧に含まれるいずれか1文字にマッチします。 | [abc] |
a, b, c |
[^...] |
角括弧に含まれる文字以外にマッチします。 | [^abc] |
a, b, c 以外の文字 |
(...) |
文字を1つのグループにまとめることができます。 | goog(le|ol) |
google |
{n} |
直前の文字の桁数を指定できます。 | a{3} |
aaa |
{n,} |
直前の文字の最小桁数のみ指定できます。 | a{3,} |
aaa |
{n,m} |
直前の文字の最小桁数と最大桁数を指定できます。 最長一致。条件に合う最長の部分に一致します。 |
a{3,4} |
aaa |
{n,m}? |
直前の文字の最小桁数と最大桁数を指定できます。 最短一致。条件に合う最短の部分に一致します。 |
a{3,4}? |
aaa |
文字 | 説明 | 対応する表現 |
---|---|---|
\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] |
文字 | 説明 | 正規表現の例 | マッチする例 |
---|---|---|---|
^ |
直後の文字が行の 先頭 にある場合にマッチします。 | ^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}$
言語別の正規表現一覧
var regex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
regex.test("murashun@gmail.com");
Javascript の正規表現例
#!/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 の正規表現例
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
- 置換を行った結果を式として処理します。