正規表現の評価について質問があります。文字列内の数字のみをテストする Java コードを次に示します。
import java.util.regex.*;
public class RegexPractice
{
public RegexPractice()
{
}
public static void checkNum(String pattern)
{
if(pattern.matches("^\\d*"))
{
System.out.println(pattern);
}
else
{
System.out.println("false");
}
}
public static void main(String args[])
{
checkNum("543853473");
checkNum("ipabgrieahgbre");
checkNum("frgwe9789fdsa798dfas");
checkNum("54336534 4364 546 654");
checkNum("");
checkNum(" ");
}
}
渡された文字列が正規表現 "^\d" に一致する場合は文字列を出力し、そうでない場合は false を出力します。空文字列が出力されていることに驚きました。これはなぜですか?数字が含まれていないためです。
空の文字列を許可しないことでこれを解決できることは承知していますが、なぜ true と評価されたのか知りたいです。