Получить подстроку с регулярным выражением

Я застрял с регулярным выражением и Java.

Моя строка ввода выглядит следующим образом:

"EC: 132/194 => 68% SC: 55/58 => 94% L: 625"

Я хочу прочитать первое и второе значения (то есть, 132 и 194 ) на две переменные. В противном случае строка является статической с изменением только чисел.

6
задан Suragch 24 January 2018 в 23:16
поделиться

3 ответа

Я предполагаю, что "первое значение" - 132, а второе - 194.

Это должно помочь:

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
}
10
ответ дан 8 December 2019 в 15:58
поделиться

Если вы искали 68 и 94, то вот схема, которая подойдет:

    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);
    }
1
ответ дан 8 December 2019 в 15:58
поделиться

Вы можете решить эту проблему с помощью String.split () :

public String[] parse(String line) {
   String[] parts = line.split("\s+");
   // return new String[]{parts[3], parts[7]};  // will return "68%" and "94%"

   return parts[1].split("/"); // will return "132" and "194"
}

или однострочным:

String[] values = line.split("\s+")[1].split("/");

и

int[] result = new int[]{Integer.parseInt(values[0]), 
                         Integer.parseInt(values[1])};
4
ответ дан 8 December 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: