О, привет. Давно молчишь.
Потому что твоя регулярка проверяет, что строка содержит один символ - не букву и не цифру
Для таких строк дает true
"-".matches("[^a-zA-Z0-9]")
"!".matches("[^a-zA-Z0-9]")
"?".matches("[^a-zA-Z0-9]")
А для твоей строки такая даст true, только в этом смысла нет
"Was it a cat I saw".matches("[a-zA-Z0-9\\s]+")
Проверять регуляркой палиндромность да еще и универсального любого числобуквенного выражения невозможно..
Надо просто убрать все знаки препинания регуляркой, перевернуть то, что получилось и сравнить.
replaceAll принимает регулярку
Вопрос следующий: почему при выполнении кода метод возвращает false?
String name = "Was it a cat I saw";
boolean is = name.matches("[^a-zA-Z0-9]");
return is;