Java正则表达式匹配单词

时间:2018-12-14 20:18:02

标签: java regex string list

我有以下单词列表:

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

要查找一个返回以元音[a,e,i,o,u]开头的单词列表的Java正则表达式吗?

3 个答案:

答案 0 :(得分:2)

^字符标记字符串的开头,您可以使用方括号来选择以下选项之一:

Pattern p = Pattern.compile("^[aeiou].*", Pattern.CASE_INSENSITIVE);
List<String> startingWithVowels =
    words.stream().filter(w -> p.matcher(w).matches()).collect(Collectors.toList());

答案 1 :(得分:1)

您可能会使用找到以元音开头的单词:

T&&

或使用Iterator<String>从列表中删除不需要的项目:

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

Iterator<String> iterator = words.iterator(); while (iterator.hasNext()) { if (!iterator.next().toUpperCase().matches("[AEIOU].*")) { iterator.remove(); } } 上的这两个都将导致:

  

[艾米丽(Ami),艾瓦(Ava)]


编辑:与Pattern@Mureinik)匹配的Regex是更好的方法。但这仍然适用于我上面介绍的情况。

答案 2 :(得分:1)

您可以使用以下命令:/ [AEIOUaeiou] \ w + /