6
votes

Obtenez la sous-chaîne avec une expression régulière

Je suis coincé avec une expression régulière et java.

ma chaîne d'entrée qui ressemble à ceci: xxx

Je veux lire les première et seconde valeurs ( c'est-à-dire, 132 et 194 ) en deux variables. Sinon, la chaîne est statique avec seulement des chiffres en train de changer.


0 commentaires

3 Réponses :


10
votes

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
}


2 commentaires

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] +). * . Pas de caractères inutiles.



4
votes

Vous pouvez le résoudre avec string.split () : xxx

ou comme une doublure: xxx

et xxx


1 commentaires

+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.



1
votes

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


0 commentaires