Nano Hash - криптовалюты, майнинг, программирование

Извлечь IP:ПОРТ

Как я могу извлечь все IP:ПОРТ с данного веб-сайта? У меня есть текущий ШАБЛОН регулярных выражений, но я думаю, что он не захватывает все..

Или это лучший способ сделать это?

PATTERN = '((?:1?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:1?\d{1,2}|2[0-4]\d|25[0-5]):\d{2,5}';
19.12.2012

  • Почему вы откатили теги Delphi? Это вообще не связано с Delphi! 19.12.2012
  • Что специфично для Delphi в RegEx? 19.12.2012
  • Да, уведомление об обновлении (добавление Или это лучший способ извлечь IP:PORT в Delphi?, что в любом случае сильно изменило первоначальный вопрос) появилось после того, как я разместил этот комментарий. 19.12.2012
  • Вы уверены, что поддержка IPV6 не нужна? 19.12.2012

Ответы:


1

Это будет работать, если за 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]?)\:\d{2,5}\b

Спички:

1.2.3.4:80
001.002.003.004:2345
255.255.255.255:13245

Не совпадает:

1.2.3
1.2.3:01
1.2.3.4.5:99
299.299.299.299:123
19.12.2012
  • Второй контрпример — допустимый IP-адрес и порт. В адресе IPv4 не обязательно должно быть ровно четыре компонента. 19.12.2012

  • 2

    Вместо RegEx вы можете использовать IdURI модуля Internet Direct (Indy). Он может разобрать любой URI на части протокола. Он поддерживает IPv4 и IPv6. Аппарат вполне автономен.

    MyURI := TIdURI.Create('http://127.0.0.1:8080');
    try
      MyHost := MyURI.Host;
      MyPort := MyURI.Port; 
    finally
      MyURI.Free;
    end;
    

    Свойства предоставляют подробную информацию об URI:

    property Bookmark : string read FBookmark write FBookMark;
    property Document: string read FDocument write FDocument;
    property Host: string read FHost write FHost;
    property Password: string read FPassword write FPassword;
    property Path: string read FPath write FPath;
    property Params: string read FParams write FParams;
    property Port: string read FPort write FPort;
    property Protocol: string read FProtocol write FProtocol;
    property URI: string read GetURI write SetURI;
    property Username: string read FUserName write FUserName;
    property IPVersion : TIdIPVersion read FIPVersion write FIPVersion;
    

    См. также это предупреждение, однако я думаю, что оно не влияет на простой разбор URI хоста: порта:

    https://stackoverflow.com/a/502011/80901

    Я рекомендую загрузить текущую версию Indy, чтобы иметь последние исправления.

    19.12.2012
  • Можете ли вы опубликовать, как фактически извлечь IP: PORT из заданного HTML-кода с помощью IdURI. Если он более удобен для процессора, то это действительно может быть лучшим решением. Но я никогда не делал этого раньше, поэтому комментируйте. 19.12.2012
  • +1. Очень хорошо. (Это не отвечает на заданный вопрос, но все же отличное предложение.) 19.12.2012
  • Да это вообще ничего не должно делать с Вопросом. Это для анализа отдельных строк на IP, PORT и т. д. Я попросил проанализировать HTML-код для совпадений IP: PORT. 19.12.2012
  • @SantosOliveira Я не видел тега HTML в вашем вопросе, поэтому предположил, что веб-сайт означает адрес веб-сайта. 19.12.2012

  • 3

    Регулярные выражения — это не волшебная палочка, которой следует махать при каждой проблеме, связанной со строками. В этом случае язык, который вы используете, вероятно, поддерживает синтаксический анализ URL.

    В PHP вы анализируете URL-адреса с помощью функции parse_url(). http://php.net/manual/en/function.parse-url.php

    В Perl вы используете класс URI::URL http://search.cpan.org/dist/URI/

    Если вы действительно хотите использовать регулярное выражение, модуль Perl http://search.cpan.org/dist/Regexp-Common/ уже имеет встроенные регулярные выражения для определения IP-адресов.

    Какой бы язык вы ни использовали, кто-то уже написал, отладил и протестировал код, который уже делает то, что вы хотите. Используйте этот существующий код, а не пишите свой собственный.

    19.12.2012
  • Тогда, возможно, это может вам помочь ="a delphi freepascal lib или функция, которая эмулирует URL-адрес разбора функции phps"> stackoverflow.com/questions/124170/ 19.12.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..