У меня есть массив «arr» с содержимым, как вы можете видеть в коде
Sub z()
Dim regex As Object, allMatches As Object, match As Object
Dim arr(1 To 16)
Dim str As String
arr(1) = "{ value:{90914793497} }"
arr(2) = "{ iPBAdd:{iPBV4Add:{192.168.1.15}} }"
arr(3) = "859272608"
arr(4) = "pocbh"
arr(5) = "0x00 01"
arr(6) = "{ iPAdd:{iPBAdd:{iPBV4Add:{192.168.33.1}}} }"
arr(7) = "TRUE"
arr(8) = "{ :{qRd:{-} dVGU:{1280} dVGD:{4224} cC:{rC} cT:{2018-09-21 14:05:30 -03:00 } uLI:{-} eInf:{qCI:{9} mRB:{-} rth:{5} aMBL:{-}}} }"
arr(9) = "2/21/2019 14:04"
arr(10) = "39"
arr(11) = "normalR"
arr(12) = "{ mSCause:{1} }"
arr(13) = "{ value:{677607185} }"
arr(14) = "GMT"
arr(15) = "-"
arr(16) = "{ :{GHH} }"
Set regex = CreateObject("vbscript.regexp")
With regex
.Global = True
.MultiLine = False
.Pattern = "\b[\d\.\-: ]+\b"
End With
For i = 1 To 16
Set allMatches = regex.Execute(arr(i))
For Each match In allMatches
If i = 8 Then
str = str & "|" & match.Value
Else
str = match.Value
End If
Next
If i = 8 Then
Debug.Print Trim(Mid(str, 2, Application.Search(" -", str) - 2))
Else
Debug.Print Trim(str)
End If
str = ""
Next
End Sub
Я хочу извлечь все значения, которые находятся в пределах {}
.Обычно каждый элемент массива имеет только одно значение между {}
, но для элемента arr (8) есть несколько значений в пределах {}
, и для этого элемента мне нужно только значение после dVGU, dVGD и date / hout без -03:00
Мой код почти все работает, извлекает нужные значения, но я хочу также напечатать значения, которые не совпадают.
Мой текущий вывод:
90914793497
192.168.1.15
859272608
01
192.168.33.1
1280|4224|2018-09-21 14:05:30
2019 14:04
39
1
677607185
и я хотел бы, чтобы вывод был таким
90914793497
192.168.1.15
859272608
pocbh
0x00 01
92.168.33.1
TRUE
1280|4224|2018-09-21 14:05:30
2/21/2019 14:04
39
normalR
1
677607185
GMT
-
GHH
, поэтому в выводе отсутствуют pocbh, 0x00 01, TRUE, normalR, GMT, -, GHH
Как я могу это исправить?