У мене є наступний заданий результат:
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]