Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (25): В начало « 6 7 8 9 [10] 11 12 13 14 » В конец    

> Описание: Поиск и замена текста по шаблонам регулярных выражений
007wan
Отправлено: 21 Ноября, 2019 - 13:34:25
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




Спасибо!!!!!!!!!!!!!!!!!
 
 Top
007wan
Отправлено: 22 Ноября, 2019 - 07:14:40
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




 Zireael пишет:
 Цитата:
Как посчитать сколько всего программ?
Потом по отдельности выводить что в них

CODE:
string rn=formatic(13)+formatic(10);
string s="Main_Program|0;"+rn+"Program_1|0;"+rn+"Program_2|0;";
//messagebox(s);

string prog[99], text_prog[99];
int count_prog=regexsearch(sizearray(prog), #prog[0], s, "(?<=^)[^\|]+", MULTILINE);

for(int i=0; i<count_prog; i++)
{
regexsearch(1, #text_prog[i], s, "(?<="+prog[i]+"\|)"+"[^;]+", MULTILINE);
messagebox("Имя: "+prog[i]+rn+"Текст: "+text_prog[i]);
}

Немного не правильно, текст читается не так.
1)Читать должен цифры после названия программы и они могут увеличиваться, например, было так:
 Цитата:

Main_Program|0;
Program_1|0;
Program_2|0;

Стало так:
 Цитата:
Main_Program|0|0;
Program_1|0|0;
Program_2|0|0;

А он читает текст как "0|0", а должен как "0" и потом вторую "0", но перед этим всем "Main_Program".
(Добавление)
И вместо нулей может быть не только цифры, но и текст.
2)Считать должен сколько всего таких коробок, а потом уже выводить сколько программ(Уже есть и работает).
 
 Top
Zireael
Отправлено: 22 Ноября, 2019 - 10:46:38
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
Стало так

Так может надо сразу писать какой будет текст.
CODE:
string rn=formatic(13)+formatic(10);
string s="Main_Program|0|123;"+rn+"Program_1|10|текст;"+rn+"Program_2|20|text;";
//messagebox(s);

string prog[99], text_prog[99], text2[99];
int count_prog=regexsearch(sizearray(prog), #prog[0], s, "(?<=^)[^\|]+", MULTILINE);
for(int i=0; i<count_prog; i++)
{
regexsearch(1, #text_prog[i], s, "(?<="+prog[i]+"\|)"+"[^;]+", MULTILINE);
int x=regexsearch(-1, #text2[0], text_prog[i], "[^\|]+");
//messagebox("Имя: "+prog[i]+rn+"Текст: "+text_prog[i]);
for(int j=0; j<x; j++)messagebox(text2[j]);
}
 
 Top
007wan
Отправлено: 22 Ноября, 2019 - 10:51:24
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




Zireael , Так я вроде в начале написал, что текст после разделителей я увеличу(ширина текста наверное подумал), но потом добавил, что и сами разделители добавятся.
 Цитата:
Как посчитать сколько всего программ? Искать должен все программы такие как Main_Program, Program_1, Program_2....Program_10...Program_100........

Потом по отдельности выводить что в них, т.е что после "|"(разделителя), текст после разделителей я в будущем увеличю, как и сами разделители.


Спасибо)
(Добавление)
Zireael , В writebuffer записывается текст без переноса строки так что
 Цитата:
formatic(13)+formatic(10)
не учитывается и всё пишется в строчку, а твой код выдает при проверки
 Цитата:
messagebox(count_prog);
Только "1", т.е находит только одну программу, как это исправить? PS: rn можно удалить)
 
 Top
Zireael
Отправлено: 22 Ноября, 2019 - 11:47:14
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
В writebuffer записывается текст без переноса строки

Вообще без разницы что записывать.
CODE:
char c[100];
strcpy(#c[0], "123"+formatic(13)+formatic(10)+"456"); // строка
messagebox(format(#c[0]));

writebuffer(#c[0], size(#c[0])); // записали в буфер
sleep(100);

char c2[100];
readbuffer(#c2[0], 100); // прочитали
messagebox(format(#c2[0]));
 
 Top
007wan
Отправлено: 22 Ноября, 2019 - 12:27:36
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




Zireael , А , нашел ошибку, но не знаю как исправить.

Ошибка тут:
 Цитата:
regexsearch(1, #text_prog, s, "(?<="+prog[i]+"\|)"+"[^;]+", MULTILINE);
Скорей всего он ищет номер от текст Program. Так не должно. Это для примера. Текст - название программ будет другим, даже с цифрами, а значения могут увеличиваться и быть не только цифровыми, а буквенными
[i](Добавление)

Вот вариации текста, которые могут быть:
 Цитата:
Main_Program|editing writes: 0;
Program_1|start: false|visual: false;
Program_2|start: false|visual: false;

GameOne|0;
GageTwo|0|0;
GameThree|0|0;

Main_Program|0|0;
Program_1|0|0;
Program_2|0|0;

Я придерживаюсь пока этого:
My Dialog|Editing Writes: 0;
Bo tOne|Start_Script: False|Visual Window: False;
Bot Two|Start Script: False|Visual Window: False;
Bot Three|Start Script: False|Visual Window: False;
Но может я изменю шаблон, например, появится еще строка значения, например для MyDialog изменится на MyDialog|Editing Writes: 0|Events: Undefined;

(Отредактировано автором: 22 Ноября, 2019 - 12:36:33)

 
 Top
Zireael
Отправлено: 22 Ноября, 2019 - 12:38:16
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
Но может я изменю шаблон

Ну вот когда определишься, тогда и задавай вопросы на форуме. А то семь пятниц не неделе...
 
 Top
007wan
Отправлено: 22 Ноября, 2019 - 12:45:26
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




 Zireael пишет:
 Цитата:
Но может я изменю шаблон

Ну вот когда определишься, тогда и задавай вопросы на форуме. А то семь пятниц не неделе...
Определился. Вот такой.
 Цитата:
My Dialog|Editing Writes: 0;
Bot One|Start_Script: False|Visual Window: False;
Bot Two|Start Script: False|Visual Window: False;
Bot Three|Start Script: False|Visual Window: False;


А всмысле определишься? Я имею ввиду изменить шаблон, т.е
-Добавить еще один разделитель "|" В конец последнего значения.
-Изменить дефолтные значения, например, "Editing Writes: 0" превратится в просто "0".
Главное отпарсить, что бы находил имена программ, а они могу быть из двух слов(например как сейас) или более, потом ищет значения, значения - это то, что после название программы разделенной "|", таких разделителей может быть много или вообще не быть, так же значения могут состоять из двух или более слов со знаками, другими словами - ПРОСТО ТЕКСТ.
Ты же мне давал код, который правда работал не совсем так, но блин может этот будет лучше с таким шаблоном?
 
 Top
Zireael
Отправлено: 22 Ноября, 2019 - 12:56:07
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
Определился. Вот такой.

И что не находит?
CODE:
string rn=formatic(13)+formatic(10);
string s="My Dialog|Editing Writes: 0;"+rn+"Bot One|Start_Script: False|Visual Window: False;"+rn+
"Bot Two|Start Script: False|Visual Window: False;"+rn+"Bot Two|Start Script: False|Visual Window: False;";
//messagebox(s);

string prog[99], text_prog[99], text2[99];
int count_prog=regexsearch(sizearray(prog), #prog[0], s, "(?<=^)[^\|]+", MULTILINE);
for(int i=0; i<count_prog; i++)
{
regexsearch(1, #text_prog[i], s, "(?<="+prog[i]+"\|)"+"[^;]+", MULTILINE);
int x=regexsearch(-1, #text2[0], text_prog[i], "[^\|]+");

messagebox("Имя: "+prog[i]+rn+"Текст: "+text_prog[i]);
for(int j=0; j<x; j++)messagebox(text2[j]);
}
 
 Top
007wan
Отправлено: 22 Ноября, 2019 - 13:20:19
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




Странно, вроде тот же код и все заработало)
 
 Top
Страниц (25): В начало « 6 7 8 9 [10] 11 12 13 14 » В конец
Сейчас эту тему просматривают: 6 (гостей: 6, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by