Java等价于PHP preg_grep

时间:2014-07-17 15:09:08

标签: java php regex equivalent

有人可以告诉我,PHP preg_grep()是否存在Java等价物?或者为我提供一个很好的方法来实现同样的目标?

我需要对输入数组中的元素进行字符串匹配,并将输入数组的索引作为preg_grep()返回数组。

3 个答案:

答案 0 :(得分:0)

没有确切的等价物。但您可以使用String#matches(String)函数来测试字符串是否与给定模式匹配。例如:

String s = "stackoverflow";
s.matches("stack.*flow");   // <- true
s.matches("rack.*blow");    // <- false

如果你想要一个带有匹配索引的结果数组,你可以遍历给定的字符串输入数组,检查匹配并将循环的当前索引添加到结果数组中。

答案 1 :(得分:0)

您可以使用此类函数,使用String.matches()并迭代您的数组:

public static List<Integer> preg_grep(String pattern, List<String> array) 
{
    List<Integer> indexes = new ArrayList<Integer>();

    int index = 0;
    for (String item : array) {
        if (item.matches("ba.*")) {
            indexes.add(index);
        }
        ++index;
    }

    return indexes;
}

Ideone Example

答案 2 :(得分:0)

如下:

private static String[] filterArrayElem(String[] inputArray) {
    Pattern pattern = Pattern.compile("(^a.*)");

    List<String> resultList = new ArrayList<>();
    for (String inputStr : inputArray) {
        Matcher m = pattern.matcher(inputStr);
        if (m.find()) {
            resultList.add(m.group(0));
        }
    }
    return resultList.toArray(new String[0]);
}

然后您可以通过以下方式使用它:

    String [] input = { "apple", "banana", "apricot"};
    String [] result = filterArrayElem(input);