2

在 Perl/PHP 中,正则表达式可以匹配一个序列并获得一个匹配序列的数组:

preg_match('/20[0-1][0-9]/', $inputstring, $array_return); // PHP

我不知道如何在 Java 中做到这一点。match.group()返回整个字符串。

这是不可能的吗?

4

2 回答 2

3

你可以做的是类似于以下的事情:

Pattern p = Pattern.compile("\\w"); // Replace "\\w" with your pattern
String str = "Some String To Match";
Matcher m = p.matcher(str);
List<String> matches = new ArrayList<String>();
while(m.find()){
    matches.add(m.group());
}

在此之后,matches将包含与 Pattern 匹配的每个子字符串。

在这种情况下,它只是每个字母,不包括空格。

如果你想把 aList<String>变成一个String[]公正的使用:

String[] matchArr = matches.toArray(new String[matches.size()]);
于 2010-06-29T15:04:53.943 回答
2

如果您只想返回部分匹配项,请使用捕获括号。

例如,要仅从 MM/DD/YYYY 日期中获取年份,您想要的正则表达式是

\d{2}/\d{2}/(\d{4})

我不知道在 Java 中执行此操作的细节(例如,您可能需要转义一些字符),但只知道您应该寻找“捕获组”应该是有用的。

于 2010-06-29T15:24:32.500 回答