2015-10-04 4 views
1

У меня есть шаблон, с которым я нахожу одно совпадение. Как я должен иметь дело с другими матчами в случае, если у меня есть несколько вариантовVbs regex как бороться с несколькими совпадениями

Dim re, targetString, colMatch, objMatch 
Set re = New regexp 
With re 
    .pattern = ">([\s,\S]*?)<" 
    .Global = True 
    .IgnoreCase = True 
    .Multiline = True 
End With 
targetString = ">test and test< >test2 and test2< >test3 and test3<" 
Set colMatch = re.Execute(targetString) 
For Each objMatch In colMatch 
result = objMatch.SubMatches.Item(0) 
Next 

В настоящее я получаю только «TEST3 и TEST3», но как я могу получить другие?

ответ

0

Вам необходимо обработать result, прежде чем вы закончите цикл с next.

В настоящее время вы назначаете каждый из результатов result, но затем сразу же завершаете цикл и переходите к следующему результату.

+0

возможноWeCouldStealAVan, Спасибо за ваш комментарий. Не могли бы вы привести рабочий пример – Alex

+0

@Alex Не могли бы вы попробовать сами? – Lankymart

1

Рассмотрим приведенный ниже пример. В нем показано, как поместить все подматрицы в массив.

Dim strSourceString, objMatch, arrResults 
strSourceString = ">test and test< >test2 and test2< >test3 and test3<" 
Set objList = CreateObject("Scripting.Dictionary") 
With New RegExp 
    .Pattern = ">([\s,\S]*?)<" 
    .Global = True 
    .IgnoreCase = True 
    .MultiLine = True 
    For Each objMatch In .Execute(strSourceString) 
     objList(objList.Count) = objMatch.SubMatches.Item(0) 
    Next 
End With 
arrResults = objList.Items 
Set objList = Nothing 
MsgBox Join(arrResults, "; ") ' array contains submatches 
+0

omegastripes, большое спасибо за вашу помощь – Alex

Смежные вопросы