2010-06-29 43 views
1

在Perl/PHP正则表达式是有可能与匹配的序列匹配的序列,并得到一个数组:Java的正则表达式:获取匹配序列

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

我无法弄清楚如何在Java中做到这一点。 match.group()返回整个字符串。

这是不可能的吗?

回答

1

如果你只想要回比赛的一部分,使用捕获括号。

例如,仅在今年得到了一个MM/DD/YYYY日期的,你想要的正则表达式是

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

我不知道在Java中这样做(你可能需要的细节例如逃避一些人物),但只知道你应该寻找“捕捉团体”应该是有用的。

2

你可以做的是类似下面的东西:

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将包含匹配的图案中的每个子。

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

如果你想打开一个List<String>String[]只需使用:

String[] matchArr = matches.toArray(new String[matches.size()]);