Регулярное выражение Java, чтобы соответствовать словам - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть следующий список слов:

List<String> words = Arrays.asList("Tom", "Emily", "Kate","Ava","Mark");

Поиск регулярного выражения Java, которое возвращает список слов, начинающихся с гласных [a,e,i,o,u]?

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Вы можете найти слова, начинающиеся с гласной, используя :

words = words.stream()
             .filter(word -> word.toUpperCase()
                                 .matches("[AEIOU].*"))
             .collect(Collectors.toList());

Или используйте Iterator<String>, чтобы удалить ненужные элементы изсписок:

Iterator<String> iterator = words.iterator();
while (iterator.hasNext()) {
    if (!iterator.next().toUpperCase().matches("[AEIOU].*")) {
        iterator.remove();
    }
}

Оба из них при System.out.println(words); приведут к:

[Эмили, Ава]


Редактировать:Сравнение с регулярным выражением Pattern (@Mureinik) - лучший подход.Тем не менее, применимо к делам, которые я представил вам выше.

0 голосов
/ 14 декабря 2018

Вы можете использовать это: / [AEIOUaeiou] \ w + /

0 голосов
/ 14 декабря 2018

Символ ^ отмечает начало строки, и вы можете использовать квадратные скобки, чтобы иметь одну из нескольких опций:

Pattern p = Pattern.compile("^[aeiou].*", Pattern.CASE_INSENSITIVE);
List<String> startingWithVowels =
    words.stream().filter(w -> p.matcher(w).matches()).collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...