я пользуюсь этой функцией. регулярка должна быть с O) флагом
var_text := "catalog and dogger"
regex := "Oi)(?P<__var_cat>cat.+?) and (?P<__var_dog.+?>)"
for i,teams_result in RxMatches(var_text, regex)
{
; обращение сразу к переменной если знаешь имя переменной в регулярке
regex_1 := teams_result.__var_cat ; будет содержать catalog
regex_2 := teams_result.__var_dog ; будет содержать dogger
; либо можно обратиться к id объекта если имена переменных не знаешь
regex_var_name := teams_result.Name(A_Index) ; содержит имя переменной объекта "__var_cat"
regex_var_value := teams_result.Value(A_Index) ; содержит значение в нашем случае "catalog"
}
RxMatches(Haystack, Needle) {
Result := [] ;new MatchCollection()
start = 1
loop
{
if(!RegexMatch(haystack, needle, M, start))
break
Result.Insert(M)
start := M.Pos + M.Len
}
return Result
}