1

Тема: AHK: В цикле перебрать все подстроки найденные регулярным выражением.

Доброго времени суток.
Пример взят из справки.

 FoundPos := RegExMatch("abcXYZ123", "abc(.*)123", SubPat)  ; Возвращает 1 и сохраняет "XYZ" в SubPat1.

А если подстрок получается n, то как обращаться к n-ому совпадению? И желательно в цикле, потому что непонятно как определить количество подстрок.

2

Re: AHK: В цикле перебрать все подстроки найденные регулярным выражением.

Думаю цикл Loop (parse a string) здесь больше подходит.

Colors = redgreenblue
Loop, parse, Colors
{
MsgBox, %A_Index% is %A_LoopField%.
If A_LoopField = e
	{
	n++
	last_pos := A_Index
	}
}
MsgBox, e встречается %n% раза `n Позиция последнего e: %last_pos%

3

Re: AHK: В цикле перебрать все подстроки найденные регулярным выражением.

А разве можно парсить по шаблону?

4 (изменено: serzh82saratov, 2017-08-25 18:32:11)

Re: AHK: В цикле перебрать все подстроки найденные регулярным выражением.

Haystack = abcXYZ123 ABCdef123

pos := 1
While pos := RegExMatch(Haystack, "i)abc(.*?)123", Match, pos), pos += StrLen(Match)
	MsgBox % Match1
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: В цикле перебрать все подстроки найденные регулярным выражением.

Спасибо огромное!!!

6

Re: AHK: В цикле перебрать все подстроки найденные регулярным выражением.

ser-bilichenko пишет:

А разве можно парсить по шаблону?

Если шаблон - нечто более сложное, чем просто набор символов - нет.