Я пытаюсь проверить, соответствует ли строка регулярному выражению значения типа double в Java.
Я хочу понять, почему следующая инструкция выводит «false».
System.out.println("1.".matches("1\\."));
А почему это печатает "ложь"
System.out.println("1.2".matches("[1-9][0-9]*(\\.[0-9]*)?"));
И почему это печатает "правда"
System.out.println("1.2a".matches("-?\\d+(\\.\\d+)?"));