質問: 12345; if ($test =~ /\d{4}/) { print '$testは4桁の数値です', "\n"; } else { print '$testは4桁の数値ではありません', "\n"; } 1; ``` **$test** が上記の2つのソースだと5桁なのですが、実際に実行してみると **4桁の数値です** と出力されてしまいます。 どのように正規表現を記載すれば、else文に入ることが出来るでしょうか。
回答: 正規表現によるマッチングでは、パターンに合致する文字列が「含まれて」いれば成功です。5桁の数字列には4桁の数字列が「含まれている」ので、表記のコードでは必ず成功してしまいます。 完全一致を表現するには文字列の先頭と末尾にマッチするメタ文字を使います。 ``` if ($test =~ /^\d{4}$/) { ```