2010-08-29 8 views

Répondre

3

Utilisez Pattern pour compiler votre expression régulière et Matcher pour obtenir un groupe capturé particulier. Le regex J'utilise est:

example\((\d+)\) 

qui capture les chiffres (\d+) dans les parenthèses. Alors:

Pattern p = Pattern.compile("example\\((\\d+)\\)"); 
Matcher m = p.matcher(text); 
if (m.find()) { 
    int i = Integer.valueOf(m.group(1)); 
    ... 
} 
0
String yourString = "example(16656);"; 

Pattern pattern = Pattern.compile("\\w+\\((\\d+)\\);"); 
Matcher matcher = pattern.matcher(yourString); 
if (matcher.matches()) 
{ 
    int value = Integer.parseInt(matcher.group(1)); 
    System.out.println("Your number: " + value); 
} 
0

Je vais vous suggérer d'écrire votre propre logique pour ce faire. L'utilisation de Pattern et Matcher de java est une bonne pratique, mais ce sont des solutions standard et peuvent ne pas toujours convenir comme une solution efficace. Tout comme Cletus a fourni une solution très soignée mais ce qui se passe dans cette logique est qu'un algorithme de correspondance de sous-chaîne est exécuté en arrière-plan pour tracer les chiffres. Vous n'avez pas besoin de la recherche de motifs ici, je suppose. Vous avez juste besoin d'extraire les chiffres d'une chaîne (comme 123 de "a1b2c3"). Voir le code suivant qui le fait de manière propre dans O (n) et n'effectue pas d'opérations supplémentaires inutiles comme le font les classes Pattern et Matcher il suffit de ne copier-coller et exécuter :)):

public class DigitExtractor {

/** 
* @param args 
*/ 
public static void main(String[] args) { 

    String sample = "sdhj12jhj345jhh6mk7mkl8mlkmlk9knkn0"; 

    String digits = getDigits(sample); 

    System.out.println(digits); 
} 

private static String getDigits(String sample) { 

    StringBuilder out = new StringBuilder(10); 

    int stringLength = sample.length(); 

    for(int i = 0; i <stringLength ; i++) 
    { 
     char currentChar = sample.charAt(i); 
     int charDiff = currentChar -'0'; 

     boolean isDigit = ((9-charDiff)>=0&& (9-charDiff <=9)); 

     if(isDigit) 
      out.append(currentChar); 

    } 

    return out.toString(); 
} 

}

Questions connexes