Я как-то даже для себя разбирал примеры и сохранил в файл. Сейчас уже самому трудно въехать, но примеры сохранились. Вот.
; РЕЖИМ 3 (объект).
; Позволяет определить позицию, длину, содержимое всей структуры, а также подстрок, отвечающих подшаблонам.
; Кроме того, можно получить дополнительную информацию по подшаблонам.
; В начало шаблона добавляем O)
;----------------------------------------------------------
;
;
; Вот пример без подшаблонов.
; Данные по структуре, отвечающей всему шаблону, будут помещены в объект Match.
;
FoundPos := RegExMatch("xyzAxyzBxyzCxyz", "O)xyz.xyz.xyz.xyz", Match)
MsgBox, %FoundPos% ;Возвращает позицию всей структуры для первого совпадения: поз. 1
MsgBox, % Match.Value ;Содержит xyzAxyzBxyzCxyz
MsgBox, % Match.Value(0) ;То же самое
MsgBox, % Match[0] ;То же самое
MsgBox, % Match.Pos ;Позиция структуры: 1. Фактически дублирует %FoundPos%
MsgBox, % Match.Pos(0) ;То же самое
MsgBox, % Match["Pos"] ;То же самое
MsgBox, % Match.Len ;Длина найденной структуры: 15
MsgBox, % Match.Len(0) ;То же самое
MsgBox, % Match["Len"] ;То же самое
; Теперь выделим подшаблоны.
; Позиции, длины, а также содержимое подстрок, отвечающих подшаблонам, будут помещены в объект Match.
;
FoundPos := RegExMatch("xyzAxyzBxyzCxyz", "O)xyz(.)xyz(.)xyz(.?)xyz", Match)
MsgBox, %FoundPos% ;Возвращает позицию всей структуры для первого совпадения: поз. 1
MsgBox, % Match.Count() ;Общее число подшаблонов: 3
MsgBox, % Match.Count ;То же самое
; На первой найденной подстроке продемонстрируем использование
; прямоугольных скобок вместо круглых
MsgBox, % Match.Value(1) ;Содержимое подстроки 1: A
MsgBox, % Match.Value[1] ;То же самое
MsgBox, % Match[1] ;То же самое
MsgBox, % Match.Pos(1) ;Позция подстроки 1: 4
MsgBox, % Match.Pos[1] ;То же самое
MsgBox, % Match.Len(1) ;Длина подстроки 1: 1
MsgBox, % Match.Len[1] ;То же самое
MsgBox, % Match.Value(2) ;Содержимое подстроки 2: B
MsgBox, % Match.Pos(2) ;Позция подстроки 2: 8
MsgBox, % Match.Len(2) ;Длина подстроки 2: 1
MsgBox, % Match.Value(3) ;Содержимое подстроки 3: C
MsgBox, % Match.Pos(3) ;Позция подстроки 3: 12
MsgBox, % Match.Len(3) ;Длина подстроки 3: 1
; Наконец, пример с именованными подшаблонами.
;
FoundPos := RegExMatch("xyzAxyzBxyzCxyzDxyzExyz", "O)xyz(?P<First_Name>.)xyz(?P<Second_Name>.)xyz(?P<Third_Name>.)xyz(.)xyz(.)xyz", Match)
MsgBox, %FoundPos% ;Возвращает позицию всей структуры для первого совпадения: поз. 1
MsgBox, % Match.Count() ;Общее число подшаблонов: 5
; В отличие от режима 1 и режима 2, где использовались псевдомассивы,
; подстроки сохраняются в объект и по имени, и по номеру.
; Рассмотрим только подстроку, отвечающую первому подшаблону.
MsgBox, % Match.Value("First_Name") ;Содержимое подстроки First_Name: A
MsgBox, % Match.Value["First_Name"] ;То же самое
MsgBox, % Match["First_Name"] ;То же самое
MsgBox, % Match.Pos("First_Name") ;Позция подстроки First_Name: 4
MsgBox, % Match.Pos["First_Name"] ;То же самое
MsgBox, % Match.Len("First_Name") ;Длина подстроки First_Name: 1
MsgBox, % Match.Len["First_Name"] ;То же самое
;MsgBox, % Match.Mark("First_Name")
MsgBox, % Match.Value(1) ;Содержимое подстроки First_Name: A
MsgBox, % Match.Value[1] ;То же самое
MsgBox, % Match[1] ;То же самое
MsgBox, % Match.Pos(1) ;Позция подстроки First_Name: 4
MsgBox, % Match.Pos[1] ;То же самое
MsgBox, % Match.Len(1) ;Длина подстроки First_Name: 1
MsgBox, % Match.Len[1] ;То же самое
*/