Тема: AHK: Поиск всех вложений regExMatch
Иногда появлялась необходимость найти все вложения в строке по шаблону, натыкался на код, который это делает, но я его вечно терял, а вспоминать суть работы с нуля как-то лень что-ли. Хотел бы поделиться функцией, но интересны недочеты в ней.
regExMatchAll(haystack, needleRegEx, options := "")
{
out := []
while RegExMatch(haystack, options "O)" needleRegEx, match, match ? match.Pos + match.Len : 1)
{
out.push(match)
}
return out
}
Не знаю какой пример применения с ходу можно придумать, но допустим мы хотим получить все английские слова из строки:
str := "I want to grow. I want to be better. You grow. We all grow. We're made to grow. You either evolve or you disappear." ; (C) Tupac Amaru Shakur
for i, match in regExMatchAll(str, "[A-Za-z\'\-]+")
{
msgbox, % match[0]
}
regExMatchAll(haystack, needleRegEx, options := "")
{
out := []
while RegExMatch(haystack, options "O)" needleRegEx, match, match ? match.Pos + match.Len : 1)
{
out.push(match)
}
return out
}

