2010-06-29 16 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()]);