Доработал
regexsearch
Можно в процессе поиска менять регулярное выражение и продолжать поиск с последней позиции найденного.
Функция может принимать разное количество параметров.
regexsearch(2, #P[0], T, R);
Первый - Сколько искать, или -1 если искать все
Второй - Указатель на массив string, в который запишутся найденные фрагменты текста
Третий - Текст в котором ищем.
Четвертый - Строка регулярного выражения
regexsearch(-1, #P[0]);
Первый - Сколько искать, или -1 если искать все
Второй - Указатель на массив string, в который запишутся найденные фрагменты текста
Поиск продолжается в том тексте, в котором искали при вызове первой функции и с тем же регулярным выражением.
regexsearch(-1, #P[0], R);
Первый - Сколько искать, или -1 если искать все
Второй - Указатель на массив string, в который запишутся найденные фрагменты текста
Третий - НОВАЯ Строка регулярного выражения
Поиск продолжается в том тексте, в котором искали при вызове первой функции, но с новым регулярным выражением.
Для всех вариантов функций возможно указывать свои флаги.
Пример
CODE:string P[50];
string T="Сначала ищем числа -222+ или -555+, затем продолжаем числа -1111+ и " + "еще есть число -1212+ и -потом+ текст и еще -один+ текст"; // строка, в которой ищем
string R="(?<=-)[0-9]+(?=+)";
messagebox (T);
//Ищем 2 числа
int k=regexsearch(2, #P[0], T, R);
for (int n=0; n<k; n++)
{
messagebox (P[n]+" 0 "+format(regexstart(n)));
}
//Продолжаем доискивать все оставшиеся числа с последнего найденного места по старому регулярному выражению
k=regexsearch(-1, #P[0]);
for (n=0; n<k; n++)
{
messagebox (P[n]+" 1 "+format(regexstart(n)));
}
//Начинаем искать текст с новым регулярным с последнего найденного места
R="(?<=-)(.*?)(?=+)";
k=regexsearch(-1, #P[0], R);
for (n=0; n<k; n++)
{
messagebox (P[n]+" 2 "+format(regexstart(n)));
}