Russian Qt Forum
Апрель 24, 2024, 07:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: IP-адрес неверно парсится  (Прочитано 5308 раз)
8Observer8
Гость
« : Июль 28, 2014, 08:18 »

Привет!

Для парсинга IP-адресов использую такое регулярное выражение:

Цитировать
(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}
 ((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))

Для примера такой список IP-адресов:

Цитировать
125.134.23.1
5.134.23.122
5.134.999.122

Результат получаю такой:
Цитировать
125.134.23.1
5.134.23.12

То есть последний IP-адрес обрезан. Почему?
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #1 : Июль 28, 2014, 08:39 »

То есть последний IP-адрес обрезан. Почему?
может потому что 5.134.999.122 не совсем правильный адрес ?
Записан
VanDerSam
Гость
« Ответ #2 : Июль 28, 2014, 08:40 »

Из-за того, что компонент строки '999.' не удовлетворяет РВ. Внимательно проанализируйте разбор вручную.
Записан
8Observer8
Гость
« Ответ #3 : Июль 28, 2014, 08:42 »

IP с числом 999 я для теста написал, чтобы посмотреть, что он отсеивается. А вот этот 5.134.23.122 почему обрезается?
Записан
VanDerSam
Гость
« Ответ #4 : Июль 28, 2014, 08:45 »

Из-за подвыражения (\d{1,2}), оно раньше (1\d{2}) срабатывает.
Записан
8Observer8
Гость
« Ответ #5 : Июль 28, 2014, 08:52 »

Большое спасибо! Переставил местами - работает! Улыбающийся

Записан
VanDerSam
Гость
« Ответ #6 : Июль 28, 2014, 08:54 »

Пожалуйста! Хочу посоветовать использовать книгу "Регулярные выражения. Сборник рецептов", Гойверт, Левитан. Там большое кол-во уже готовых решений имеется.
Записан
8Observer8
Гость
« Ответ #7 : Июль 28, 2014, 09:08 »

Спасибо! Я сейчас изучаю по книге "Регулярные выражения. 10 минут на урок", Бен Форта (175 страниц). Как её основательно изучу, то начну, ту что вы посоветовали. И ещё Бен Форта советует во введении своей книги изучить потом "Регулярные выражения", Дж. Фридл

P.S. Я ещё параллельно изучаю "SQL. 10 минут на урок", Бен Форта (287 страниц)
« Последнее редактирование: Июль 28, 2014, 09:31 от 8Observer8 » Записан
OKTA
Гость
« Ответ #8 : Июль 28, 2014, 10:42 »

Проверять и тестировать регулярные выражения очень удобно вот здесь http://regex101.com/
Записан
8Observer8
Гость
« Ответ #9 : Июль 28, 2014, 12:42 »

OKTA, спасибо! Улыбающийся

Я прикрепил тестер, которым сам пользуюсь (с книжкой Бена шёл)

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.