「正規表現一覧」の版間の差分
ナビゲーションに移動
検索に移動
33行目: | 33行目: | ||
| [^...] || 角括弧に含まれる文字以外にマッチする。 || [^abc]<br>[^a-c] || a, b, c以外の文字 | | [^...] || 角括弧に含まれる文字以外にマッチする。 || [^abc]<br>[^a-c] || a, b, c以外の文字 | ||
|- | |- | ||
| (...) || 文字を1つのグループにまとめる。 || goog(le|ol) || google<br>googol | | (...) || 文字を1つのグループにまとめる。 || <nowiki>goog(le|ol)</nowiki> || google<br>googol | ||
|- | |- | ||
| {n} || 直前の文字の桁数を指定できる。 || a{3} || aaa | | {n} || 直前の文字の桁数を指定できる。 || a{3} || aaa |
2020年2月7日 (金) 23:03時点における版
概要
基本的な正規表現
最長一致とは、最長文字列を優先して検索し、最短一致とは、最短文字列を優先して検索する。
基本的な正規表現
文字 | 説明 | 正規表現の例 | マッチする例 |
---|---|---|---|
. | 任意の1文字にマッチする。 | . | A あ |
+ | 直前の文字が1回以上繰り返す場合にマッチする。 最長一致。条件に合う最長の部分に一致する。 |
go+gle | gogle go...gle |
* | 直前の文字が0回以上繰り返す場合にマッチする。 最長一致。条件に合う最長の部分に一致する。 |
go*gle | ggle go...gle |
? | 直前の文字が0個か1個の場合にマッチする。 最長一致。条件に合う最長の部分に一致する。 |
go?gle | ggle gogle |
+? | 直前の文字が1回以上繰り返す場合にマッチする。 最短一致。条件に合う最短の部分に一致する。 |
go+?gle | gogle go...gle |
*? | 直前の文字が0回以上繰り返す場合にマッチする。 最短一致。条件に合う最短の部分に一致する。 |
go*?gle | ggle go...gle |
?? | 直前の文字が0個か1個の場合にマッチする。 最短一致。条件に合う最短の部分に一致する。 |
go??gle | ggle gogle |
いずれかの条件(OR条件)として使う。 | 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 aaaaa... |
{n,m} | 直前の文字の最小桁数と最大桁数を指定できる。 最長一致。条件に合う最長の部分に一致する。 |
a{2,4} | aa aaa aaaaa |
{n,m}? | 直前の文字の最小桁数と最大桁数を指定できる。 最短一致。条件に合う最短の部分に一致する。 |
a{2,4}? | aa 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] |
特定の位置関係の正規表現
文字 | 説明 | 正規表現の例 | マッチする例 |
---|---|---|---|
^ | 直後の文字が行の先頭にある場合にマッチする。 | google... | |
$ | 直前の文字が行の末尾にある場合にマッチする。 | google$ | |
\< | 単語の先頭にマッチする。 | \< | |
\> | 単語の末尾にマッチする。 | \> | google* |
\b | 単語の先頭か末尾にマッチする。 | \b | *google* |
\B | 単語の先頭か末尾以外にマッチする。 | \B | |
\A | ファイルの先頭にマッチする。 | \A | なし |
\z | ファイルの末尾にマッチする。 | \z | なし |
\G | 直前の一致文字列の末尾にマッチする。 | \G | なし |
置換文字列で使える正規表現
文字 | 説明 |
---|---|
\0 | 一致した文字列全体に置換する。 |
\1 - \9 | 一致した文字列の1 - 9番目に対応する文字列に置換する。 |
\l | 次の1文字を小文字に変換する。 |
\L...\E | 挟まれた文字列を小文字に変換する。 |
\u | 次の1文字を大文字に変換する。 |
\U...\E | 挟まれた文字列を大文字に変換する。 |
正規表現のサンプル一覧
aから始まってzで終わる3桁の文字列
a.z
aから始まってzで終わる2桁以上の文字列
a.*z
aから始まってzで終わる3桁以上の文字列
a.+z
半角数字
\d または [0-9]
半角数字以外
\D または [^0-9]
4桁の半角数字
\d{4}
4桁以上の半角数字
\d{4,}
1 - 4桁の半角数字(最長一致)
\d{1,4}
4 - 10 桁の半角数字(最長一致)
\d{4,10}
4 - 10桁の半角数字(最短一致)
\d{4,10}?
桁区切りのカンマ付数字列
\b\d{1,3}(,\d{3})*\b
半角アルファベット大文字
\u
半角アルファベット大文字以外
\U
半角アルファベット小文字
\l
半角アルファベット小文字以外
\L
半角アルファベットすべて
[\u\l]
半角アルファベット以外
[^\u\l]
英単語(半角英文字列)
\b[\u\l]+\b
1桁の偶数
[02468]
1桁以上の偶数
\d*[02468]\b
1桁の奇数
[13579]
1桁以上の奇数
\d*[13579]\b
1桁の16進数
[0-9A-Fa-f]
ひらがな1文字
[ぁ-ん]
カタカナ1文字
[ァ-ヴ]
半角カタカナ
[ヲ-゚]
改行(CRLF、LF)
\n
空白文字(半角スペース、タブ、改行文字) ※全角スペースにはヒットしない。
\s
OR条件
東京|大阪
行頭
^
行末
$
空白行(CRLF、LF)
^\n
行全体
^.*$
使用頻度の高い正規表現式
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}$
サンプルコード(Python)
#!/usr/bin/env python
import re
reg = r'^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$'
email = 'murashun@gmail.com'
is_email = re.match(reg, email) is not None
print(isEmail);