1

Тема: AHK: Перебор с конца

Как перебирать пример с конца содержимого переменной - сначала выводя "4", потом "3" и т.д.?

n := "<1><2><3><4>"

match := "", match1 := "", Pos := 0
While Pos := RegExMatch(n, "<(\d+)>", match, Pos + 1)
   MsgBox, %match1%

2

Re: AHK: Перебор с конца

Может сначала записать всё в список, затем будет проще с обработкой каждого элемента.

Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101

3 (изменено: 1srafel, 2025-03-22 21:40:52)

Re: AHK: Перебор с конца

Нашелся такой пример, но затрюдняюсь модифицировать для случая, когда вхождения находятся на одной строке:

cmt_pages=
(
"id": "1",
"id": "2",
"id": "3",
"id": "4",
"id": "5",
"id": "6",
)
arr := StrSplit(cmt_pages, "`n", "`r")
max := arr.MaxIndex()
Loop % max
   MsgBox, % RegExReplace( arr[ max - A_Index + 1 ], """id"":\s""([^""]+).*", "$1" )

То есть, так:

cmt_pages=
(
<1><2><3><4>
)
arr := StrSplit(cmt_pages, "`n", "`r")
max := arr.MaxIndex()
Loop % max
   MsgBox, % RegExReplace( arr[ max - A_Index + 1 ], "<(\d+)>", "$1" )

4

Re: AHK: Перебор с конца

Как вы в первом посте перебираете строку в обычном порядке, так и создавайте массив.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Перебор с конца

К сожалению, не разобрался с массивами. Получилось так:

n := "<1><2><3><4>"

arr := StrSplit(n, "<", ">")
max := arr.MaxIndex()
Loop % max
   MsgBox, % RegExReplace( arr[ max - A_Index + 1 ], "<(\d+)>", "$1" )

6 (изменено: __Михаил__, 2025-03-23 00:11:02)

Re: AHK: Перебор с конца

1srafel
Вроде ничего сложного, можно даже через строку обработать:

Text := "<1><2><3><4>"

Rep := RegExReplace(Text, "<(\d+)>", "$1|")	; Извлекаем числа.
Sort, Rep, R N D|			; Сортировка реверсная, числовая, '|' как делитель.
Rep := RTrim(Rep, "|")		; Убрать последний символ '|'.
MsgBox, % Rep				; Отображаем строку.

;Превращаем строку в список:
Arr := StrSplit(Rep, "|")
For k,v in Arr
 MsgBox, % "Индекс:`t`t" k "`nСодержимое:`t" v
Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101