извлечь IP и порт из строки в vb.net - PullRequest
0 голосов
/ 14 июля 2020

У меня есть строка

Timestamp: 1594312360   Host: 127.0.0.1 ()        Ports: 22/open/tcp//ssh//
Timestamp: 1412355121   Host: 127.0.0.1 ()  Ports: 21/open/tcp//telnet//
Timestamp: 1594741231  Host: 127.0.0.1 ()        Ports: 8080/open/tcp//http//
Timestamp: 1232370123   Host: 127.0.0.1 ()  Ports: 443/open/tcp//https//

, и я хотел бы только с ip: Port

127.0.0.1:22
127.0.0.1:21
127.0.0.1:8080
127.0.0.1:443

может ли кто-нибудь помочь мне сделать это, я использую Vb.net, если использую Regex нет проблем

1 Ответ

0 голосов
/ 14 июля 2020

Разделите его по пространству (ваши данные, похоже, содержат пробелы, а не табуляции), с установленной опцией RemoveEmptyEntries:

For Each line in File.ReadLines("c:\temp\mylog.txt")

  'line is eg "Timestamp: 1594312360   Host: 127.0.0.1 ()        Ports: 22/open/tcp//ssh//"
  Dim array = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)

Next line

Теперь массив содержит:

(0): Timestamp:
(1): 1594312360
(2): Host:
(3): 127.0.0.1 
(4): ()
(5): Ports: 
(6): 22/open/tcp//ssh//

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

Вам придется отказаться от всего после первого индекс '/' в строке портов:

Dim port = array(6).Remove(array(6).IndexOf("/"c))

Если вы хотите использовать регулярное выражение (которое вы должны указать в своем вопросе; просто задав открытый вопрос «как я могу?», Он не налагает никаких ограничений на то, как ..), вы можете посмотреть что-то вроде:

Dim r = new Regex("Host: (?<ip>[0-9.]+).*?Ports: (?<p>\d+)")

Dim m = r.Match(line)

Console.WriteLine(m.Groups("ip").Value)
Console.WriteLine(m.Groups("p").Value)

Регулярное выражение означает

Host: (?<ip>[0-9.]+).*?Ports: (?<p>\d+)

Найдите Host: , за которым следует несколько цифр или точек, и запишите их в группу с именем ip, за которым следует любое число чего угодно до слова Ports: , за которым следует любое количество цифр, захваченных в группу с именем p

...