#java #регулярные_выражения
Какие символы включает регулярное выражение [а-яА-Я]+? Известно, что оно не включает символы ё и ъ. И для того, чтобы охватить весь алфавит русского языка нужно писать [а-яА-ЯёЁъЪ]+ ? Или есть какие-то ещё символы алфавита русского языка, которое это выражение не включает? Как узнать весь диапазон включённых в регулярное выражение символов?
Ответы
Ответ 1
Регулярные выражения Java поддерживают стандарт регулярных выражений для Юникода (Unicode® Technical Standard #18 UNICODE REGULAR EXPRESSIONS). Соответственно, диапазоны символов считаются по кодовым позициям в Юникоде. Буквы русского алфавита занимают в Юникоде позиции с 0410 по 044F, кроме букв «ё» и «Ё», которые по историческим причинам поставлены на позиции не соответствующие русскому алфавиту (найдите их в таблице символов). Это и вызывает необходимость указывать их отдельно. Есть какие-то ещё символы алфавита русского языка, которое это выражение не включает Нет, даже для твердого знака не нужно делать исключения. Как узнать весь диапазон включённых в регулярное выражение символов? По кодовым позициям. В Java числовое значение символа (char) соответствует его позиции в Юникоде. Соответственно, можно задать переменные char для границ диапазона и пройтись циклом по всем символам. Например, следующий код выводит все символы, входящие в диапазон от «А» до «Я» и их позиции в Юникоде. for(char ch = 'А'; ch<='Я'; ch++) { System.out.println(ch +" ("+ ((int) ch)+")"); }
Комментариев нет:
Отправить комментарий