"[a-zA-Z]"
соответствует только одному символу. Чтобы сопоставить несколько символов, используйте "[a-zA-Z]+"
.
Поскольку точка является джокером для любого персонажа, вы должны замаскировать ее: "abc\."
Чтобы сделать точку необязательной, вам нужен знак вопроса:
"abc\.?"
Если вы пишете Pattern как константу литерала в своем коде, вы должны замаскировать обратную косую черту:
System.out.println ("abc".matches ("abc\\.?"));
System.out.println ("abc.".matches ("abc\\.?"));
System.out.println ("abc..".matches ("abc\\.?"));
Объединение обоих шаблонов:
System.out.println ("abc.".matches ("[a-zA-Z]+\\.?"));
Вместо a-zA-Z часто более подходящим является \ w, поскольку он фиксирует иностранные символы, такие как äöüßø и т. Д.:
System.out.println ("abc.".matches ("\\w+\\.?"));