Je suis coincé avec une expression régulière et java.
ma chaîne d'entrée qui ressemble à ceci: p> Je veux lire les première et seconde valeurs ( c'est-à-dire, 132 code> et 194 code>) en deux variables. Sinon, la chaîne est statique avec seulement des chiffres en train de changer. P> p>
3 Réponses :
je suppose que la "première valeur" est 132, et le second 194 em>. Cela devrait faire le truc: p> String str = "EC: 132/194 => 68% SC: 55/58 => 94% L: 625";
Pattern p = Pattern.compile("^EC: ([0-9]+)/([0-9]+).*$");
Matcher m = p.matcher(str);
if (m.matches())
{
String firstValue = m.group(1); // 132
String secondValue= m.group(2); // 194
}
Merci un million pour l'aide, j'ai sauvé ma journée (très stressée) ici!
Je préférerais utiliser ce modèle . *? ([0-9] +) / ([0-9] +). * Code>. Pas de caractères inutiles.
Vous pouvez le résoudre avec ou comme une doublure: p> et p> string.split () code>:
+1 - Vous préférez toujours utiliser plusieurs appels .split () avec des expulsions plus simples que d'utiliser un appel .Split () avec des regexnes même modérément complexes.
Si vous étiez après 68 et 94, voici un modèle qui fonctionnera:
String str = "EC: 132/194 => 68% SC: 55/58 => 94% L: 625";
Pattern p = Pattern.compile("^EC: [0-9]+/[0-9]+ => ([0-9]+)% SC: [0-9]+/[0-9]+ => ([0-9]+)%.*$");
Matcher m = p.matcher(str);
if (m.matches()) {
String firstValue = m.group(1); // 68
String secondValue = m.group(2); // 94
System.out.println("firstValue: " + firstValue);
System.out.println("secondValue: " + secondValue);
}