Regex для сопоставления незакомментированных строк из файла конфигурации и захвата только IP-адресов из строки - PullRequest
2 голосов
/ 16 августа 2011

Вот содержимое файла, который я пытаюсь разобрать.

# nameserver 3.3.3.3
nameserver 1.1.1.1
nameserver 2.2.2.2

Пока у меня есть следующее:

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

, которое работает, чтобы игнорировать закомментированные строки, но соответствует nameserver 1.1.1.1 и nameserver 2.2.2.2

В идеале я хотел бы сопоставлять только те строки, которые не закомментированы и соответствуют только IP-адресам, так как часть строки сервера имен для меня не важна.

Я нашел здесь регулярное выражение в StackOverflow, которое выполнит одно или другое, но не оба.

Любые намеки на то, что я делаю неправильно, были бы потрясающими.

Спасибо всем.

Ответы [ 2 ]

3 голосов
/ 16 августа 2011

Используйте группу захвата ( ... ) для захвата всего IP:

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

Смотрите здесь

1 голос
/ 16 августа 2011

Вы также можете взглянуть на Regexp :: Common :: net , который уже делает это для вас.

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