У меня есть следующий список слов:
List<String> words = Arrays.asList("Tom", "Emily", "Kate","Ava","Mark");
Поиск регулярного выражения Java, которое возвращает список слов, начинающихся с гласных [a,e,i,o,u]?
[a,e,i,o,u]
Вы можете найти слова, начинающиеся с гласной, используя java-stream :
words = words.stream() .filter(word -> word.toUpperCase() .matches("[AEIOU].*")) .collect(Collectors.toList());
Или используйте Iterator<String>, чтобы удалить ненужные элементы изсписок:
Iterator<String>
Iterator<String> iterator = words.iterator(); while (iterator.hasNext()) { if (!iterator.next().toUpperCase().matches("[AEIOU].*")) { iterator.remove(); } }
Оба из них при System.out.println(words); приведут к:
System.out.println(words);
[Эмили, Ава]
Редактировать:Сравнение с регулярным выражением Pattern (@Mureinik) - лучший подход.Тем не менее, применимо к делам, которые я представил вам выше.
Pattern
@Mureinik
Вы можете использовать это: / [AEIOUaeiou] \ w + /
Символ ^ отмечает начало строки, и вы можете использовать квадратные скобки, чтобы иметь одну из нескольких опций:
^
Pattern p = Pattern.compile("^[aeiou].*", Pattern.CASE_INSENSITIVE); List<String> startingWithVowels = words.stream().filter(w -> p.matcher(w).matches()).collect(Collectors.toList());