Страницы

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

суббота, 13 октября 2018 г.

Регулярное выражение для определения гласной или согласной буквы в начале строки

Как составить такое регулярное выражение которое проверяет только первую букву в строке на то является она согласной или гласной?
Тут нужно как-то регулярное выражение написать
if (string.matches("[рег-ое выражение]")) { return true; }


Ответ

Должно быть достаточно такого: str.matches("^(?i:[aeiouy]).*"). Для кириллицы - str.matches("^(?ui:[аеёиоуыэюя]).*")
^ обозначает начало строки (?i:...) - включает CASE_INSENSITIVE для этой группы, чтобы не перечислять повторно заглавные буквы. (?ui:...) Важно! Если вы работаете с юникодом, то вышеуказанный ключ не сработает. Нужно добавить UNICODE_CASE, т.е. ?ui [aeiouy] - все гласные. Если нужно найти все согласные, то нельзя использовать [^aeiouy], т.к. в эту группу попадают вообще все символы юникода, кроме этих шести. Нужно точно так же перечислить согласные. .* - дальше сколько угодно (хоть ноль) любых символов, кроме конца строки.
Демонстрация работы с разными строками:
public class Main {
public static void main(String[] args) { String[] strs = {"abcd efjk", "hello world", "a", "E", "d", "", "
", "юникод"}; for (String str: strs) { boolean test = str.matches("^(?i:[aeiouy]).*"); System.out.println(str + ": " + test); } } }
Результат:
abcd efjk: true hello world: false a: true E: true d: false : false
: false юникод: false

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

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