Разделите его по пространству (ваши данные, похоже, содержат пробелы, а не табуляции), с установленной опцией 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