Регулярное выражения поиск в строке 4-го int

213
31 октября 2021, 02:40

Есть вот такой кусок кода, который читает из файла строки и парсит в регулярном выражении в int. Проблема в том, что регулярное выражение пропускает пять int, а надо строго четыре.

List<Integer> integers = new ArrayList<Integer>();
//Reading key in the string
line2 = line2;
Pattern pattern = Pattern.compile("\\d+\\S?\\d*\\d+\\S?\\d");
Matcher matcher = pattern.matcher(line2);
while (matcher.find() ) {
    String s = matcher.group(0);
    if (s.replaceAll("\\D", " ").length() == s.length()) {
        integers.add(Integer.parseInt(s));
};
Answer 1

Так как вы не указали диалект регулярных выражений, вот вам POSIX ERE, достающее четвертое число:

^[^[:digit:]]*([[:digit:]]+[^[:digit:]]+){3}([[:digit:]]+).*$

Пропуск нечисел, три последовательночти число-нечисло (группа 1), число (группа 2), и пропуск всего остального до конца строки. Ваше четвёртое число в группе 2.

Из комментариев стало понятно, что вам нужна четвёртая цифра. Это делается так:

[^[:digit:]]*[[:digit:]]{3}([[:digit:]])

Ваша четвёртая цифра в группе 1.

READ ALSO
Найти все корни уравнения xy=z

Найти все корни уравнения xy=z

Не могу придумать хотя бы алгоритм нахождения всех корней уравнений xy = zПотом нужно будет его запрограммировать

217
Android studio доступ к html тегам

Android studio доступ к html тегам

Я в Android studio создаю приложение средствами HTML, Css, JS(дабы владею ими)Вопрос: как я могу получить доступ к HTML тегу(например "p"), в который динамически...

129
Couldn autowire. Spring boot

Couldn autowire. Spring boot

Пытаюсь создать контроллер spring bootПроект разбит на несколько модулей: dao, entities, services, controllers

116
Не проходит unit test при делении в столбик

Не проходит unit test при делении в столбик

Тест программы, которая делает деление в столбик :

156