Страницы

Поиск по вопросам

понедельник, 8 апреля 2019 г.

Диапазон символов в регулярном выражении

Какие символы включает регулярное выражение [а-яА-Я]+? Известно, что оно не включает символы ё и ъ. И для того, чтобы охватить весь алфавит русского языка нужно писать [а-яА-ЯёЁъЪ]+ ? Или есть какие-то ещё символы алфавита русского языка, которое это выражение не включает? Как узнать весь диапазон включённых в регулярное выражение символов?


Ответ

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

Комментариев нет:

Отправить комментарий