1

Тема: AHK: Обратные ссылки RegExreplace

Приветствую мастера. Проблема у меня такая:
Хочу в строке заменять текст типа "<k:GGGG>" и "<k:EEEEEE>" на значения из массива (!).

bText := RegExReplace(bText, "i)(\<k:(.*)\>)", This.getKeysList["$2"])

Проблема заключается в том что массив поглащает обратную ссылку $2 и в прямом смысле ищет ключ "$2", а не его значение. Что подскажете?

2

Re: AHK: Обратные ссылки RegExreplace

Я делал так.

3 (изменено: alekksss, 2017-10-24 19:36:36)

Re: AHK: Обратные ссылки RegExreplace

stealzy Отлично. Я почти додумал до этого, но совсем запутался и отчаялся. Может кому пригодиться:

while(RegExMatch(bText, "Ui)(\<k:(?<getK>([^ ]+))\>)", match))
	bText := RegExReplace(bText, match, This.getKeysList[matchgetK])

Заменяет найденый шаблон MATCH (полностью) на нужные данные из массива. Можно даже функцию полноценную написать, но это уже для коллекции и совсем другая история. Еще раз спасибо. Тему можно закрыть.
PS: This.getKeysList переменная класса, нет тут ошибки.
PPS: Модификатор "U" нужен для отключения "жадности" шаблона. То есть два шаблона подряд будут обрабатываться отдельно.
Например <k:Car> <k:House>. Без модификатора шаблон (.*) будет определён как "Car> <k:House" что не есть хорошо.
PPPS: Все PS для новичков.