Код Java REGEX для проверки символов на индийском языке не работает?

Почему следующий код не работает (появляется ложно) с индийскими языками?

System.out.println(Charset.forName("UTF-8").encode("అనువాద")
                .asCharBuffer().toString().matches("\\p{L}+"));

System.out.println(Charset.forName("UTF-8").encode("स्वागत")
                .asCharBuffer().toString().matches("\\p{L}+"));

System.out.println(Charset.forName("UTF-8").encode("நல்வரவு")
                .asCharBuffer().toString().matches("\\p{L}+"));

Все приведенные выше коды возвращают значение false. В чем проблема с этим регулярным выражением? Как проверить любой символ юникода в мире?

Ответ 1

\p{Letter} захватывает только буквы, но вам также нужны метки, которые вы можете записать с помощью \p{Mark}.

System.out.println("स्वागत".matches("[\\pL\\pM]+"));