如何在字符串列表中使用正则表达式?

时间:2014-06-03 18:51:35

标签: java regex

我试图使用正则表达式来查找字符串列表中的模式:

static List<Integer> getMatchingIndexes(List<String> list, String regex) {
    ListIterator<String> li = list.listIterator();
    List<Integer> indexes = new ArrayList<Integer>();
    System.out.println(list.matches("\\w.*"));
    while(li.hasNext()) {
        int i = li.nextIndex();
        String next = li.next();
        if(Pattern.matches(regex, next)) {
            indexes.add(i);
        }
    }
    System.out.println(indexes);
    return indexes; 
}

当我试图查看是否有任何匹配(list.matches(&#34; \ w。*&#34;))时,看起来没有任何内容出现在他的列表中; (只是一个例子,而不是实际的正则表达式),它一直给我一个错误:

对于类型List

,方法matches(String)未定义

如何在此列表中使用正则表达式?

2 个答案:

答案 0 :(得分:2)

遍历列表(使用for-each循环)并检查匹配项:

for (String s : list) {
    s.matches("\\w.*");
    // Do stuff here.
}

答案 1 :(得分:1)

尝试通过以下方式迭代List<Integer>中的每个项目:

for(Integer i : indexes){
    System.out.println(i.toString().matches("\\w.*"));
}

以上相当于:

for(int i=0; i<indexes.size(); i++){
    System.out.println(indexes.get(i).toString().matches("\\w.*"));
}