正規表現の 主なルール
文字(メタ文字以外): 文字そのものとマッチ
文字クラス
[abc] | a または b または c | |
[a-z] | 範囲を示す | |
[^0-9] |
左ブラケットの直後に ^ |
|
=> 英数字以外 | ||
. (ピリオド) |
任意の文字 |
quantifier (限量子 or 量指定子)
…を、いくつ という指定
a+ | a を 1つ~いくつでも | |
a* |
a を 0 ~いくつでも | |
a? | a を 0 か 1 |
アンカー 文字とマッチせず場所とマッチする
^ | 行の(単語の)頭 | |
$ | 行の(〃 )末尾 |
キャプチャ と 後方参照
(以下の条件を満たす単語がいくつあるか調べる。)
/........../ # でもいいが、
/.{10}/ # とも書ける。
ただしこれは10文字以上のもの全部にマッチするので、 問題の趣旨に沿うためには、
/^.{10}$/ # のように ^ $ で挟む必要がある。
/^[A-Z]*/ # だと すべてマッチしてしまう
#(* は 0個以上を意味するので)
/^[A-Z]*$/ # でOK
/[0-9]/ # でOKだが バックスラッシュ記法を使って、
/\d/ # でもOK
これは 文字クラスの [^ ]
を使って、
/[^a-zA-Z0-9]/ # でOK
# バックスラッシュ記法で \w \W があるが
/\W/ # だと _ を英数字に含んでしまう
# (それでよければこの記法でOK)
/^[eE].*[eE]$/ # でもOKだが
# (真ん中の「何でもいい」部分は .* でつなぐのが定石)
/^e.*e$/i # のほうが簡単
/^(.).*\1$/ # と書ける
\1
で表す。\1
\2
\3
で参照する。$1
$2
$3
のように表す。/^(.)(.).*\2\1$/
/^(.*)\1$/