CODE:external(INT, "regex_search", "regex_search", pathfolder()+"\regex.dll" );
external(INT, "regex_iterator", "regex_iterator", pathfolder()+"\regex.dll" );
external(INT, "regex_replace", "regex_replace", pathfolder()+"\regex.dll" );
char result[1][999];
char result2[9999][999];
string path_in="C:\как сделать.txt"; // файл со строками
string path_out="C:\как сделать2.txt"; // куда сохранить результат
string s;
char BOM[3]={239, 187, 191}
char c[9999999];
int no_repeat=0;
if(fopen(path_in, "rb")) // открыть файл для чтения
{
int count_symbol=freadb(#c[0], sizearray(c))-1; // прочитать файл в массив
fclose();
if(formatci(c[0])==239 && formatci(c[1])==187 && formatci(c[2])==191)s=format(#c[3], count_symbol); // если utf8
else s=format(#c[0], count_symbol); // иначе ansi
if(fopen(path_out, "wb")) // открыть файл для записи
{
// если utf8 записать в файл метку
if(formatci(c[0])==239 && formatci(c[1])==187 && formatci(c[2])==191)fwriteb(#BOM[0], sizearray(BOM));
textbkcolor(16000, 65279);
while(regex_search(s, "[^\r\n]+", address(#result[0][0]), sizearray(result), sizearray(result[])))
{
textout(0, 300, 300, "Количество неповторяющихся строк: "+format(no_repeat), 1);
no_repeat++;
int x=regex_iterator(s, format(#result[0][0]), address(#result2[0][0]), sizearray(result2), sizearray(result2[]));
strcpy(#c[0], format(#result[0][0])+" "+format(x)+formatic(13)+formatic(10));
fwriteb(#c[0], size(#c[0])); // записываем в файл строку и сколько раз она повторяется
regex_replace(s, format(#result[0][0]), "", address(#c[0]), sizearray(c));
s=format(#c[0]);
}
fclose();
start(path_out);
}
}