Ответ 1
\p{Letter}
захватывает только буквы, но вам также нужны метки, которые вы можете записать с помощью \p{Mark}
.
System.out.println("स्वागत".matches("[\\pL\\pM]+"));
Почему следующий код не работает (появляется ложно) с индийскими языками?
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. В чем проблема с этим регулярным выражением? Как проверить любой символ юникода в мире?
\p{Letter}
захватывает только буквы, но вам также нужны метки, которые вы можете записать с помощью \p{Mark}
.
System.out.println("स्वागत".matches("[\\pL\\pM]+"));