无循环中的正则表达式

时间:2013-10-01 08:51:30

标签: java regex

如何在不使用循环的情况下重写以下表达式?

Pattern pattern = Pattern.compile(filterRegEx);
Matcher regexMatcher = pattern.matcher("(.*)");

for (String word : words) {
    if (pattern.matcher(word).matches()) {
        foundList.add(word);
    }
}

1 个答案:

答案 0 :(得分:0)

如果您想避免使用循环,则需要使用某种形式的函数式编程。 Java 8将在此区域中具有一些新功能,但您现在可以使用Google Guava中的Collections2#filter(或Iterables#filter)方法;它允许您指定条件(例如pattern.matcher(word).matches())并选择集合中匹配的元素。

请注意,对象返回“read through”到原始集合,因此如果需要保留已过滤的列表,则需要复制它们(例如使用ArrayList(Collection))。