Вверх ↑
Этот топик читают: Гость
Ответов: 204
Рейтинг: 2
#1: 2016-02-10 17:46:11 ЛС | профиль | цитата
Есть довольно большой текст. В нем присутствуют числа. А так же в тексте есть ip адреса! Как можно отсеять ненужный текст, лишние числа и оставить лишь ip?
Поначалу задачка казалась не сложной, но что-то я совсем запутался!

текст выглядит примерно так:
"съешь 217.20.164.163еще этих 85 мягких французских 748булок да выпей195.95.206.17 чаю"

карма: 1

0
Ответов: 2059
Рейтинг: 132
#2: 2016-02-10 18:16:47 ЛС | профиль | цитата
Регулярными выражениям легче всего по моему.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
проверка на корректность.
^(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])(\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])){3}$

Add(MainForm,2953706,21,105)
{
Width=469
}
Add(Memo,6721256,189,21)
{
Left=10
Top=15
Width=200
Height=225
Strings=#85:съешь 217.20.164.163еще этих 85 мягких французских 748булок да выпей195.95.206.17 чаю|
}
Add(RE_Search,7168144,189,91)
{
Expression="(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
link(onMatch,14734705:doEvent1,[])
link(SourceStr,6721256:Text,[])
}
Add(Button,8573213,98,91)
{
Left=60
Top=245
link(onClick,7168144:doExec,[])
}
Add(Memo,12912017,301,91)
{
Left=280
Top=20
Width=165
Height=225
}
Add(Hub,14734705,245,91)
{
link(onEvent1,12912017:doAdd,[])
link(onEvent2,7168144:doExecNext,[(271,104)(271,92)(177,92)(177,104)])
}


карма: 6

1
Голосовали:ogrif
Ответов: 204
Рейтинг: 2
#3: 2016-02-10 18:32:21 ЛС | профиль | цитата
flint2 писал(а):
Регулярными выражениям легче всего по моему.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
или
/^(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])(\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])){3}$/
проверка на корректность.


спасибо, то что нужно!!! я целые схемы на весь экран рисовал и ничего толком не получилось! А тут раз, два и все!
карма: 1

0
Ответов: 824
Рейтинг: 138
#4: 2016-02-10 19:51:08 ЛС | профиль | цитата
flint2, а регулярное выражение зачем такое длинное...
вот так короче ([\d]{1,3}\.){3}[\d]{1,3}
карма: 1

0
Ответов: 2059
Рейтинг: 132
#5: 2016-02-10 19:59:58 ЛС | профиль | цитата
sashaoli, а потому, что 256.256.256.256, и 999.999.999.999 это уже не IP адрес.
У тебя такие варианты проходят. Диапазон от 0.0.0.0 до 255.255.255.255 в каждой секции 0-FF
карма: 6

0
Ответов: 2059
Рейтинг: 132
#6: 2016-02-16 02:02:19 ЛС | профиль | цитата
Так. Просто по клавишам.

В IPv6 используется длина адреса 128 бит вместо 32.
В настоящее время протокол IPv6 уже используется в нескольких тысячах сетей по всему миру.
IP выглядит так - 2001:0DB8:0000:ABCD:0000:0000:0000:1234
Для сокращения записи адресов IPv6 заключается в том, что двойное двоеточие :: может заменить любую единую, смежную строку одного или нескольких 16-битных сегментов (хекстетов), состоящих из нулей. Двойное двоеточие :: может использоваться в адресе только один раз.

Неверный адрес:
2001:0DB8::ABCD::1234

Возможные расширения неоднозначно записанных сжатых адресов:
2001:0DB8::ABCD:0000:0000:1234
2001:0DB8::ABCD:0000:0000:0000:1234
2001:0DB8:0000:ABCD::1234
2001:0DB8:0000:0000:ABCD::1234
карма: 6

0
Гость
Ответов: 17029
Рейтинг: 0
#7: 2016-02-16 14:31:37 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-21 07:52:32
карма: 0

0
Ответов: 2059
Рейтинг: 132
#8: 2016-02-16 16:13:31 ЛС | профиль | цитата
г. _мимо_проходил_,
Имелось ввиду по теме - regular expressions.
а если ещё и порт нужен?

А порт, каким боком? - это префикс-суффикс.
Это уже адресация в коммунальной квартире.
Газету кладут в почтовый ящик квартиры, а не на стол в комнате Ивана Ивановича.
Да, помню, в пятидесятых -шестидесятых, несколько ящиков на двери, - это и есть по портам.
Порты обозначались наклеенными названиями газет на почтовых ящиках, а адрес - это улица, дом, корпус и номер квартиры.
Сколько может жильцов проживать, сколько можно портов завести? - определяется возможностью попасть в туалет, ну и на кухне...
Хорошо быть девушкой в розовом пальто,
Можно и не в розовом, - но уже не то.
Хорошо быть дамаю в норковом манто,
Можно и не в норковом, - но уже не то.
карма: 6

0
Гость
Ответов: 17029
Рейтинг: 0
#9: 2016-02-16 18:26:18 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-21 07:52:33
карма: 0

0
Ответов: 2059
Рейтинг: 132
#10: 2016-02-16 18:56:16 ЛС | профиль | цитата
IPv4 - то да.
Я понял, что вопрос заключался в этом:
HTTP://[ 2001:0f68:0000:0000:0000:0000:1986:69af]:80/
Адрес IPv6 содержит много двоеточий. Но браузер (Web browser) считает, что все, что следует за двоеточием – это номер порта (port number). Поэтому адреса IPv6 закрываются квадратными скобками.
карма: 6

0
Ответов: 5227
Рейтинг: 587
#11: 2016-02-17 14:34:27 ЛС | профиль | цитата
чтобы логи парсить порт тоже лучше учитывать
вот рыба code_36946.txt
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1code_36946.txt [2.2KB] [374]
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)