/ / Java regex для заданого виводу - java, regex

Java regex для заданого виводу - java, regex

У мене є наступний заданий результат:

1:      IP4 1.1.1.1         255.0.0.0       1.255.255.255
127:    IP6 fd55:faaf:e1ab:215d:0:0:0:103/64
fe80::7699:75ff:fec8:427e
128:    IP4 10.241.6.103    255.255.255.128 10.241.6.127

Я хочу, щоб регулярний вираз відповідав рядкам 1,2 і 3 і не відповідав третьому рядку.

Regex має звучати так:

Лінія повинна починатися з числа між 0 і 999, а потім - :, потім біле пробіли IP4 або IP6 слово і решту лінії до "n" не має значення.

Відповіді:

0 для відповіді № 1

Використовуйте наступний регулярний вираз:

d{1,3}:s+IP[46].*[0-9]

Просто пояснив:

  • d{1,3} відповідає номеру з 1, 2 або 3 цифрами (0-999)
  • : матчі : буквально
  • s+ матчі на рівні одного пробілу
  • IP[46] матчі IP4 або IP6. [46] відповідає одному з символів у групі.
  • .*[0-9] відповідає всім іншим, що закінчується номером.

Перевірте цей веб-сайт для детального пояснення: Regex101. Не забудьте в Java використовувати подвійне вислизання \, це "загальна помилка".

\d{1,3}:\s+IP[46].*[0-9]