1

Тема: AHK: Использование RegExReplace() для второй/третьей/четвёртой строки

Здравствуйте. В первый элемент массива помещается текст вида 

Население 100 4100 Население
Атакующие 900 30 Очки
Обороняющиеся 3500 0 Очки
Уровень героя 38 39000 Опыт:

Получаем первую строку

String :=  DataArray[1]
population := RegExReplace(String, ".*? [^/Население].*", "$1")

Вычленяем из неё 4100

population := RegExReplace(population, ".*?(\d+) [^/].*", "$1")

И подобную процедуру нужно сделать для второй, третьей, четвёртой строки. То есть получить значения 30, 0 39000 в отдельные переменные.
Но у меня не удаётся получить эти строки (и соотвественно их содержимое). К сожалению моих знаний не хватает чтобы вывести их самостоятельно.

Буду благодарен даже за малейшую подсказку.

2 (изменено: Mural, 2022-07-04 12:05:13)

Re: AHK: Использование RegExReplace() для второй/третьей/четвёртой строки

Решил проблему самостоятельно, добавив опцию m)^ в регулярные выражения.
Например чтобы получить вторую строку текста, нужно использовать форму вида:

attack := RegExReplace(String, "m)^[^/Атакующие].*", "$1")

Надеюсь помогу кому-нибудь в будущем, ведь этот форум дал мне гораздо больше чем я могу ему отплатить.

3

Re: AHK: Использование RegExReplace() для второй/третьей/четвёртой строки

Можно получить всё в цикле:

text =
(
Население	100	4100 Население
Атакующие	900	30 Очки
Обороняющиеся	3500	0 Очки
Уровень героя	38	39000 Опыт:
)
m := ""
while RegExMatch(text, "`amO)\d+(?=\D*$)", m, m ? m.Pos + m.Len : 1)
   MsgBox, % m[0]
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder