正規表現の 主なルール

正規表現の活用

パターンの練習 (解答編)

(以下の条件を満たす単語がいくつあるか調べる。)

1 10文字の単語
/........../        # でもいいが、
/.{10}/     # とも書ける。

ただしこれは10文字以上のもの全部にマッチするので、 問題の趣旨に沿うためには、

/^.{10}$/   # のように ^ $ で挟む必要がある。
2 すべて大文字の単語 => 文字クラスを使う
/^[A-Z]*/       # だと すべてマッチしてしまう
    #(* は 0個以上を意味するので)
/^[A-Z]*$/      # でOK
3 数字を含む単語
/[0-9]/         # でOKだが バックスラッシュ記法を使って、
/\d/                # でもOK
4 英数字以外の文字を含むもの

これは 文字クラスの [^ ] を使って、

/[^a-zA-Z0-9]/  # でOK
        # バックスラッシュ記法で \w \W があるが
/\W/            # だと _ を英数字に含んでしまう
        # (それでよければこの記法でOK)
5 e(E) で始まりe(E)で終わるもの(ケースを区別しないマッチ)
/^[eE].*[eE]$/  # でもOKだが
        # (真ん中の「何でもいい」部分は .* でつなぐのが定石)
/^e.*e$/i       # のほうが簡単
6 最初の文字と最後の文字が同じもの  => 後方参照を使って
/^(.).*\1$/     # と書ける
後方参照
7 最後の2文字が最初の2文字の逆転になっているもの
/^(.)(.).*\2\1$/
8 barbar のように 同じ並びの繰り返しになっている単語
/^(.*)\1$/