регулярное выражение извлекает все действительные IPv4 из строки - PullRequest
0 голосов
/ 01 апреля 2020

Из аналогичной строки ниже я хотел бы извлечь только действительные адреса IPv4

233.444.444.222 , 127.0.0.1 , 127.0.0.0.1 , 192.168.1.1 , 812.1.1.1.1

, где у меня есть несколько действительных IP-адресов и несколько случайных чисел, разделенных "." Используя следующее:

\b(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b

Я также извлекаю 127.0.0.0 и 1.1.1.1, которые не годятся. Любое предложение, пожалуйста?

KR ДК

1 Ответ

1 голос
/ 01 апреля 2020

Вы можете использовать отрицательные обходные пути, чтобы избежать сопоставления IP-адреса, ведомого или завершенного точкой:

(?<!\.)\b(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b(?!\.)

Демо: https://regex101.com/r/6yHTnY/1

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