2015-12-13 1 views
0

Pourquoi ne pas opérer une sélection multiple?Pourquoi ne fonctionne pas la sélection multiple?

Je dois obtenir tous les nombres d'une chaîne.

 Pattern pattern = Pattern.compile("(([1-9]\\d*(\\.|\\,)\\d*)|0{1}(\\.|\\,)\\d*|(\\.|\\,)\\d+|([1-9]\\d*|0{1}))"); 
     Matcher matcher = pattern.matcher(text);  
     boolean matches = matcher.matches(); 
     log.info("matches: {}", matches); 

     if (matches) { 

      log.info("matches value: {}", text); 

     } else { 
      while (matcher.find()) { 
       String value = matcher.group();      
       log.info("value: {}", value);                
      } 
    } 

Lorsque texte variable est égale à "111 222" il fonctionne (111222), mais si je mets "111 222" (sans premier espace blanc) n'obtenir (222).

J'ai vérifié sur regex101.com (avec g drapeau) et le modèle fonctionne comme prévu.

+0

je reçois 111 et 222, avec ou sans espace au début, avec votre code! –

+0

S'il vous plaît, essayez de mettre à jour la version du code – rdm

+0

vous donne quasiment la solution –

Répondre

1

correspond et de commencer à manger votre chaîne.

2 solutions:

ou de jeter votre test avec des allumettes()

ou remis à zéro après:

matcher.reset(); 

Et voir que: Difference between matches() and find() in Java Regex

+0

Ainsi, pour obtenir tous les numéros, il suffit d'appeler la méthode find(). Droite? – rdm