Я, пожалуй, воздержусь от такого.
Цитата blackeangel:
И как выводить все это не на экран, а в массив? »
|
А зачем Вам массив? Что Вы с ним делать будете? Ладно, число токенов известно заранее — пять, но число строк-то неизвестно. И делать каждый раз Redim Preserve?! Или сначала посчитать строки, а затем определять размер массива?! Ни то, ни другое не есть хорошо и правильно. Здесь я бы использовал словарь, содержащий в качестве ключа — саму строку, а в качестве значения — коллекцию SubMatches из токенов.
Код — чтение из файла в словарь и пример работы со словарём
Код:
Option Explicit
Sub Main()
Dim objFSO As New FileSystemObject
Dim arrContent() As String
Dim objRegExp As New RegExp
Dim objTokens As New Dictionary
Dim elem As Variant
Dim i As Integer
Dim strKey As Variant
Dim strToken As Variant
With objFSO.OpenTextFile("C:\Temp\0002\0001.txt")
arrContent = Split(.ReadAll(), vbCrLf)
.Close
End With
objRegExp.Pattern = "^(.+) (\d+) (\d+) (\d+)(?:| (.+))$"
For Each elem In arrContent
If objRegExp.Test(elem) Then
With objRegExp.Execute(elem).Item(0)
objTokens.Add elem, .Submatches
End With
End If
Next elem
For Each strKey In objTokens
Debug.Print strKey
For Each strToken In objTokens.Item(strKey)
Debug.Print vbTab, i, ": [" & strToken & "]"
Next strToken
Next strKey
Set objRegExp = Nothing
Set objFSO = Nothing
End Sub
Картинка с демонстрацией результата работы кода
Сам проект в архиве:
SampleProject.7z.