2013-10-01 35 views
0

如何在不使用循环的情况下重写下列表达式?无循环中的正则表达式

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

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

你确定你想要做你现在正在做的事吗? 'matcher()'方法接受一个你想用来匹配正则表达式的字符串。你现在正在传递一个正则表达式模式。可以用文字解释你确切想要的东西。 –

+2

你打算在某处使用'regexMatcher'还是与它无关? –

+0

你确定那个匹配器吗?似乎匹配整个字符串。 – Thilo

回答

0

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

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