Как я могу сделать регулярное выражение для поиска только IPv4-адрес? - PullRequest
0 голосов
/ 13 сентября 2018

Как я могу сделать регулярное выражение для поиска только IPv4-адрес. когда я делаю

grep -E '([0-9]\.){1,3}[0-9]\b filename

Также отображается группа с пятью октетами.

1 Ответ

0 голосов
/ 13 сентября 2018

Я сомневаюсь, что это можно сделать с помощью регулярного выражения POSIX, поэтому я бы предпочел предложить решение PCRE:

grep -P '(?<!\d\.|\d)\d{1,3}(?:\.\d{1,3}){3}(?!\.?\d)' filename

Шаблон соответствует

  • (?<!\d\.|\d) - местоположение, которому непосредственно не предшествует цифра и точка или просто цифра
  • \d{1,3} - от 1 до 3 цифр
  • (?:\.\d{1,3}){3} - три случая
    • \. - точка
    • \d{1,3} - от 1 до 3 цифр
  • (?!\.?\d) - местоположение, за которым не сразу следует дополнительная точка, а затем цифра.

Чтобы сделать шаблон немного более точным, замените шаблон октетов (\d{1,3}) на (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).

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