получить целочисленные значения с помощью регулярного выражения - PullRequest
0 голосов
/ 16 июня 2020

Значения StringBuilder выводят следующие значения.

StringBuilder values = new StringBuilder();

2020 May 12 09:28:11.292856 arrisxi6 runAppManager.sh[28161]: 200512-09:28:11.277875 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 2015
2020 May 12 09:28:12.282703 arrisxi6 runAppManager.sh[28161]: 200512-09:28:12.281919 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 12025
2020 May 12 09:28:13.280853 arrisxi6 runAppManager.sh[28161]: 200512-09:28:13.280054 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 15029
2020 May 12 09:28:14.280813 arrisxi6 runAppManager.sh[28161]: 200512-09:28:14.280181 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 14029

Из приведенных выше значений мне нужно получить значения 2015, 12025, 15029, 14029 в виде списка. Может быть целым, длинным или двойным. Использование регулярного выражения Как я могу получить эти значения

Ответы [ 2 ]

3 голосов
/ 16 июня 2020

Вы можете попробовать следующее регулярное выражение для достижения своей цели:

videoBufferedMiliseconds\s+(\d+(?:\.\d+)?)$

Объяснение вышеуказанного регулярного выражения:

videoBufferedMiliseconds\s+ - соответствует videoBufferedMiliseconds буквально вместе с одним или несколькими символами пробела.

(\d+(?:\.\d+)?) - представляет группу захвата, захватывающую целые числа, двойные или длинные.

$ - обозначает конец строки.

pictorial representation

You can find the demo of the above regex in здесь.

Пример реализации в java:

import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main
{
    private static final Pattern pattern = Pattern.compile("videoBufferedMiliseconds\\s+(\\d+(?:\\.\\d+)?)$", Pattern.MULTILINE);
    public static void main(String[] args) {
        final String string = "2020 May 12 09:28:11.292856 arrisxi6 runAppManager.sh[28161]: 200512-09:28:11.277875 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 2015.234\n"
     + "2020 May 12 09:28:12.282703 arrisxi6 runAppManager.sh[28161]: 200512-09:28:12.281919 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 12025\n"
     + "2020 May 12 09:28:13.280853 arrisxi6 runAppManager.sh[28161]: 200512-09:28:13.280054 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 15029\n"
     + "2020 May 12 09:28:14.280813 arrisxi6 runAppManager.sh[28161]: 200512-09:28:14.280181 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 14029";
        
        Matcher matcher = pattern.matcher(string);
        while(matcher.find()){
            System.out.println(matcher.group(1));
        }
    }
}

Здесь вы можете найти пример выполнения вышеуказанной реализации в .

0 голосов
/ 16 июня 2020

Вы можете использовать утверждение положительного просмотра назад для этого

Pattern pattern = Pattern.compile("(?<=videoBufferedMiliseconds)\\s*(\\d+.?\\d+)");

Код:

StringBuilder values = new StringBuilder();
values.append("2020 May 12 09:28:11.292856 arrisxi6 runAppManager.sh[28161]: 200512-09:28:11.277875 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 2015\n")
        .append("2020 May 12 09:28:12.282703 arrisxi6 runAppManager.sh[28161]: 200512-09:28:12.281919 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 12025\n")
        .append("2020 May 12 09:28:13.280853 arrisxi6 runAppManager.sh[28161]: 200512-09:28:13.280054 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 15029\n")
        .append("2020 May 12 09:28:14.280813 arrisxi6 runAppManager.sh[28161]: 200512-09:28:14.280181 [mod=RDKBROWSER2, lvl=INFO] [tid=28787] onConsoleLog:rdkbrowser.cpp:1130 [ConsoleAPI:473]: Progress: videoBufferedMiliseconds 14029.123\n");

Pattern pattern = Pattern.compile("(?<=videoBufferedMiliseconds)\\s*(\\d+.?\\d+)");
Matcher matcher = pattern.matcher(values);
while (matcher.find()) {
    System.out.println(matcher.group());
}

Вывод:

2015
12025
15029
14029.123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...