Вместо того, чтобы выискивать то, что вам не нужно, проще и с меньшей ошибкой сконцентрироваться на том, что вы хотите:
Dim sExp : sExp = "('111','222','333','444','555','666')"
Dim aLines : aLines = Array( _
"111 , , ,Yes ,Yes" _
, "222 , , ,Yes ,Yes" _
, "333 , , ,Yes ,Yes" _
, "444 , , ,Yes ,Yes" _
, "555 , , ,Yes ,Yes" _
, "666 , , ,Yes ,Yes" _
)
Dim sAll : sAll = Join( aLines, vbCrLf )
WScript.Echo sAll
Dim reCut : Set reCut = New RegExp
reCut.Global = True
reCut.MultiLine = True
reCut.Pattern = "^\d+"
Dim oMTS : Set oMTS = reCut.Execute( sAll )
If 0 = oMTS.Count Then
WScript.Echo "Bingo A!"
Else
ReDim aNums( oMTS.Count - 1 )
Dim nI
For nI = 0 To UBound( aNums )
aNums( nI ) = oMTS( nI ).Value
Next
Dim sRes : sRes = "('" & Join( aNums, "','" ) & "')"
If sRes = sExp Then
WScript.Echo "QED:", sRes
Else
WScript.Echo "Bingo B!"
End If
End If
вывод:
111 , , ,Yes ,Yes
222 , , ,Yes ,Yes
333 , , ,Yes ,Yes
444 , , ,Yes ,Yes
555 , , ,Yes ,Yes
666 , , ,Yes ,Yes
QED: ('111','222','333','444','555','666')
Аннотации:
Я использую массив для построения моей строки для обработки ( sAll ).Ваша строка ( strText ) происходит из файла.Итак:
Dim sAll : sAll = Join( aLines, vbCrLf )
==>
Dim sAll : sAll = objFile.ReadAll
Строка анализируется с помощью RegExp (reCut), ее шаблон ^ \ d + ищет последовательность ( + ) цифр ( \ d ) в начале ( ^ ) строки (не всей строки; поэтому атрибут MultiLine установлен в True).Результатом .Execute является коллекция совпадений (oMTS), связывающаяся с совпадениями.
Чтобы упростить объединение ожидаемого результата, значения соответствий копируются в массив (aNums).
Выражение "('" & Join( aNums, "','" ) & "')"
объединяет элементы массива, используя разделитель (комбинатор?) ',' - для завершения результата нам нужна просто подходящая головка (' соответственно.хвост ') .