2010-06-29 17 views
1

Dans regex Perl/PHP correspondant est est possible de faire correspondre une séquence et obtenir un tableau avec des séquences adaptées:Java regex: Obtenez la séquence

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

Je ne peux pas comprendre comment faire cela en Java. match.group() renvoie la chaîne entière.

Est-ce impossible?

Répondre

1

Si vous voulez seulement retourner une partie du match, l'utilisation des parenthèses de capture.

Par exemple, pour obtenir seulement l'année sur un MM/JJ/date AAAA, l'expression rationnelle que vous voulez est

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

Je ne connais pas les détails de le faire en Java (vous pourriez avoir besoin pour échapper à certains caractères, par exemple), mais sachant que vous devriez chercher des "groupes de capture" devrait être utile.

2

Qu'est-ce que vous pouvez faire est quelque chose de semblable à ce qui suit:

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()); 
} 

Après cela, matches contiendra tous les sous-chaîne qui correspondent au motif.

Dans ce cas, il s'agit de chaque lettre, à l'exclusion des espaces.

Si vous voulez transformer un List<String> en String[] il suffit d'utiliser:

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