Необходимо составить регулярное выражение для проверки наличия кириллических символов в строке. Как такое можно реализовать?
-
http://ru.stackoverflow.com/q/440125/10105 – VladD Sep 23 '16 at 06:59
2 Answers
Для работы с регулярными выражениями в Java существуют классы Pattern и Matcher:
String regex = "[а-яёА-ЯЁ]+";
String str = "Работа не walk - работа work";
Pattern pattern = Pattern.compile(regex);
Matcher m = pattern.matcher(str);
if (m.find()){
//делаем что-то
}
К предыдущему ответу добавлю что [а-яА-Я]+ не включает символы ё и Ё
- 516
-
1Да вы правы, мне нужно было это просто отметить в комментарии в вашему ответу.[а-яёА-ЯЁ] это лишь полный набор символов русского алфавита, а не всей кириллицы в целом – Aleksei Chibisov Sep 23 '16 at 07:24
Не совсем ясен вопрос проверка вхождения,только ли из символов кириллицы (к слову кириллица понятие растяжимое) состоит строка или нечто другое.Но по сути вопроса выражение типа [а-яА-Я]+ вернет Вам true при наличии в строке хотя бы одного включения перечисленных символов.
Ну и от себя дополню ответ методом проверки наличия символов кириллицы в строке:
public boolean isCyrillic(String s) {
boolean result = false;
for (char a : s.toCharArray()) {
if (Character.UnicodeBlock.of(a) == Character.UnicodeBlock.CYRILLIC) {
result = !result;
break;
}
}
return result;
}
UPD:
к ответу @Aleksei Chibisov
Да не вернет. Собственно к этому и ремарка "кириллица понятие растяжимое" - самих символов которые относятся к данной группе масса. К кириллическим алфавитам относятся: Белорусский,Болгарский,Сербский,Македонский,Русский,Украинский ...и такие символы как є i w ... и куча других...Как по мне стоит в данном случае использовать именно UnicodeBlock - там присутствуют расширения A и B c версии 1.7
И реакция метода представленного выше на символ 'ё' или 'є' - будет true
- 2,266
- 1
- 10
- 23