Сопоставление нескольких строк в двух шаблонах регулярного выражения ⇐ JAVA
Сопоставление нескольких строк в двух шаблонах регулярного выражения
Мне нужно найти решение, но я не могу его найти. Кажется, решение довольно близко, но чего-то не хватает, и я верю, что вы сможете мне с этим помочь.
Это строка, и каждая строка представляет собой одну строку:
Пинг www.onet.pl [52.85.243.125] с 64 байтами данных [Тип=8 Код=0] [TTL=255]: Ответ от: 52.85.243.125:0 seq=1 байт=92 тип=ECHO REPLY время=12,7мс Ответ от: 52.85.243.125:0 seq=2 байт=92 тип=ECHO REPLY время=11,3мс Ответ от: 52.85.243.125:0 seq=3 байт=92 тип=ECHO REPLY время=13,1мс Ответ от: 52.85.243.125:0 seq=4 байт=92 тип=ECHO REPLY время=13,2мс и мой код:
String REGEX_1 = "\\A.*\\[TTL=(\\d+)\\]:$"; String REGEX_2 = ".*Ответ от.*seq=(\\d+).*time=(\\d+).*"; Шаблоны List = new ArrayList(); окончательный шаблон шаблона = Pattern.compile(REGEX_1); окончательный шаблон шаблон_2 = шаблон.компилировать(REGEX_2, шаблон.MULTILINE); шаблоны.add(шаблон); шаблоны.add(шаблон_2); for(Шаблон: шаблоны){ окончательный Matcher matcher = pat.matcher(string); если (matcher.matches()) { пытаться { окончательный int ttl = Integer.parseInt(matcher.group(1)); окончательный длинный seq = Long.parseLong(matcher.group(2)); окончательный двойной rtt = Double.parseDouble(matcher.group(3)); вернуть новую статистику(rtt, ttl, seq); } catch (окончательное NumberFormatException e) { вернуть ноль; } } } Я хочу получить TTL из первой строки и seq/time из следующих.
Ожидаемый результат:
time=12,7, TTL=255, seq=1 время=11,3, TTL=255, сек=2 время=13,1, TTL=255, сек=3 время=13,2, TTL=255, сек=4 Раньше у меня был только один шаблон, но он не работал, поэтому мне сказали разделить его. К сожалению, я не могу найти решение. Как указано выше, он ничего не возвращает. Не могли бы вы мне помочь?
Я пытался поставить
while(matcher.find()) внутри условия if, но тоже не сработало.
Мне нужно найти решение, но я не могу его найти. Кажется, решение довольно близко, но чего-то не хватает, и я верю, что вы сможете мне с этим помочь.
Это строка, и каждая строка представляет собой одну строку:
Пинг www.onet.pl [52.85.243.125] с 64 байтами данных [Тип=8 Код=0] [TTL=255]: Ответ от: 52.85.243.125:0 seq=1 байт=92 тип=ECHO REPLY время=12,7мс Ответ от: 52.85.243.125:0 seq=2 байт=92 тип=ECHO REPLY время=11,3мс Ответ от: 52.85.243.125:0 seq=3 байт=92 тип=ECHO REPLY время=13,1мс Ответ от: 52.85.243.125:0 seq=4 байт=92 тип=ECHO REPLY время=13,2мс и мой код:
String REGEX_1 = "\\A.*\\[TTL=(\\d+)\\]:$"; String REGEX_2 = ".*Ответ от.*seq=(\\d+).*time=(\\d+).*"; Шаблоны List = new ArrayList(); окончательный шаблон шаблона = Pattern.compile(REGEX_1); окончательный шаблон шаблон_2 = шаблон.компилировать(REGEX_2, шаблон.MULTILINE); шаблоны.add(шаблон); шаблоны.add(шаблон_2); for(Шаблон: шаблоны){ окончательный Matcher matcher = pat.matcher(string); если (matcher.matches()) { пытаться { окончательный int ttl = Integer.parseInt(matcher.group(1)); окончательный длинный seq = Long.parseLong(matcher.group(2)); окончательный двойной rtt = Double.parseDouble(matcher.group(3)); вернуть новую статистику(rtt, ttl, seq); } catch (окончательное NumberFormatException e) { вернуть ноль; } } } Я хочу получить TTL из первой строки и seq/time из следующих.
Ожидаемый результат:
time=12,7, TTL=255, seq=1 время=11,3, TTL=255, сек=2 время=13,1, TTL=255, сек=3 время=13,2, TTL=255, сек=4 Раньше у меня был только один шаблон, но он не работал, поэтому мне сказали разделить его. К сожалению, я не могу найти решение. Как указано выше, он ничего не возвращает. Не могли бы вы мне помочь?
Я пытался поставить
while(matcher.find()) внутри условия if, но тоже не сработало.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Сопоставление фиксированной позиции в строке с использованием регулярного выражения C++
Anonymous » » в форуме C++ - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Сопоставление фиксированной позиции в строке с использованием регулярного выражения C++
Anonymous » » в форуме C++ - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-