概要
正規表現の基本。 ERE(Extended regular expression)で扱える記法の中でよく使いそうなやつをまとめる。
文字クラス
[文字列]
- 文字列の中の任意の一文字と一致
- Ex:
- [きつね]
- きつねたぬきねこ
- き,つ,ね,き,ね
- きつねたぬきねこ
- [きつね]
[^文字列]
- 文字列の中にない任意の一文字と一致
- Ex:
- [^きつね]
- きつねたぬきねこ
- た,ね,こ
- きつねたぬきねこ
- [^きつね]
[文字列-文字列]
- 任意の文字範囲にある一文字と一致
- Ex:
- [あ-ん]
- きつねたぬきcat
- き,つ,ね,た,ぬ,き
- きつねたぬきcat
- [あ-ん]
\d
- 10進数数字と一致
- Ex:
- \d
- りんごが10個
- 1, 0
- りんごが10個
- \d
\D
- 10進数数字以外の任意の文字と一致
- Ex:
- \D
- りんごが10個
- り,ん,ご,が,個
- りんごが10個
- \D
\w
- 全ての半角英数字とアンダースコアと一致
- Ex:
- \w
- abc_*
- a,b,c,_
- abc_*
- \w
\W
- 全ての半角英数字とアンダースコア以外と一致
- Ex:
- \W
- abc_*
-
- abc_*
- \W
\s
- 空白文字と一致
- Ex:
- \s
- a b c
- 空白文字2つに一致(aとbの間、bとcの間)
- a b c
- \s
\s
- 空白以外の文字と一致
- Ex:
- \S
- a b c
- a,b,c
- a b c
- \S
アンカー
^
- 行の先頭の文字列で一致
- Ex:
- ^ありがとう
- ありがとう友よ
- 昨日はありがとう ✗
- ^ありがとう
$
- 行の末尾の文字列で一致
- Ex:
- ありがとう$
- ありがとう友よ ✗
- 昨日はありがとう ○
- ありがとう$
グループ化構成体
(副次式)
- 副次式に一致する文字列をキャプチャする
- Ex:
- (りり){2}
- ありりりりがとう ○
- ありりがとう ✗
- (りり){2}
#量指定子
*
- 直前の要素を0回以上繰り返しているときに一致
- 最長一致数量子
- Ex:
- ab*
- ab
- ab
- abab
- ab, ab
- aabb
- ab
- abbb
- abbb
- a
- a
- ba
- a
- ab
- ab*
+
- 直前の要素を1回以上繰り返しているときに一致
- 最長一致数量子
- Ex:
- ab+
- ab
- ab
- abab
- ab,ab
- aabb
- abb
- abbb
- abbb
- a
- 一致なし
- ba
- 一致なし
- ab
- ab+
?
- 直前の要素を0回または1回繰り返しているときに一致
- 最長一致数量子
- Ex:
- ab?
- ab
- ab
- abab
- ab,ab
- aabb
- a, ab
- abbb
- ab
- a
- a
- ba
- a
- ab
- ab?
*?
- 直前の要素を0回以上繰り返しているときに一致
- 最短一致数量子
- Ex:
- ab*?
- ab
- a
- abab
- a,a
- aabb
- a,a
- abbb
- a
- a
- a
- ba
- a
- ab
- ab*?
+?
- 直前の要素を1回以上繰り返しているときに一致
- 最短一致数量子
- Ex:
- ab+?
- ab
- ab
- abab
- ab,ab
- aabb
- ab
- abbb
- ab
- a
- 一致なし
- ba
- 一致なし
- ab
- ab+?
??
- 直前の要素を0回または1回繰り返しているときに一致
- 最短一致数量子
- Ex:
- ab??
- ab
- a
- abab
- a,a
- aabb
- a, a
- abbb
- a
- a
- a
- ba
- a
- ab
- ab??
{n}
- 直前の要素をn回繰り返しているときに一致
- Ex:
- b{2}
- abba
- bb
- abba
- b{2}
{n,}
- 直前の要素をn回以上繰り返しているときに一致
- Ex:
- b{2,}
- abbba
- bbb
- abbba
- b{2,}
{n, m}
- 直前の要素をn回以上m回以下繰り返しているときに一致
- Ex:
- b{2,4}
- abbba
- bbb
- abbbba
- bbbb
- abbba
- b{2,4}
代替構成体
|
- 区切られた文字列のいずれか1つに一致
- Ex:
- ab|cd
- abcd
- ab,cd
- aaccd
- cd
- abcd
- ab|cd