Вот фрагмент кода, который может помочь:
Предположим, что ввод:
Imports System.Text.RegularExpressions
'...
Dim input As New StringBuilder
input.AppendLine("12/14/2020 355345 12/14/2020")
input.AppendLine("12/13/2020 425345 12/13/2020")
input.AppendLine("12/20/2020 93488557 12/20/2020")
input.AppendLine("12/21/2020 4 12/21/2020")
input.AppendLine("12/20/2020 3443 12/20/2020")
'...
Используйте RegEx , чтобы извлечь числа между двумя датами следующим образом:
Dim patt = "(\d+\/\d+\/\d+)\s?(\d+)\s?(\d+\/\d+\/\d+)"
For Each m In Regex.
Matches(input.ToString, patt, RegexOptions.Multiline).
Cast(Of Match)
Console.WriteLine(m.Groups(2).Value)
Next
Это захватит три группы. Пример для первого совпадения:
m.Groups(1).Value
: 14.12.202 первая дата. m.Groups(2).Value
: 355345 число между ними. m.Groups(3).Value
: 12/14/2020 вторая дата.
Если вы не используете записанные даты, вам не нужно группировать темы и использовать вместо этого следующий шаблон:
Dim patt = "\d+\/\d+\/\d+\s?(\d+)\s?\d+\/\d+\/\d+"
For Each m In Regex.
Matches(input.ToString, patt, RegexOptions.Multiline).
Cast(Of Match)
Console.WriteLine(m.Groups(1).Value)
Next
И вы получите число между двумя датами в группе 1.
Вывод обеих:
355345
425345
93488557
4
3443
regex101
Кроме того, использование квантификаторов в шаблонах RegEx является хорошей идеей, как упомянул г-н @AndrewMorton в своих благодарных комментариях, и пропустить любые возможные вещи, такие как 1234/239994/2293
во входных данных:
Dim patt = "\d{1,2}/\d{1,2}/\d{4}\s(\d{1,})\s\d{1,2}/\d{1,2}/\d{4}"
For Each m In Regex.
Matches(input.ToString, patt, RegexOptions.Multiline).
Cast(Of Match)
Console.WriteLine(m.Groups(1).Value)
Next
Тест квантификаторов здесь .