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

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

 Страниц (25): « 1 2 3 [4] 5 6 7 8 9 » В конец    

> Описание: Поиск и замена текста по шаблонам регулярных выражений
Zireael
Отправлено: 12 Мая, 2019 - 19:04:20
Post Id



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


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




 Цитата:
Я так думаю нужно regexstart использовать, но не пойму как. В примерах только regexstart(#Pos_start[0]); есть, но как отсюда выцепить координаты ?

regexstart позволит получить позицию первого символа слова, допустим 15, а координаты хранятся в symbolxpos и symbolypos. Значит symbolxpos(15) и symbolypos(15) это будут координаты первого символа найденного слова.
CODE:
string text_KIB="Какой - то текст проп распознался"; // допустим это распознанная строка

int Pos_start;
if (regexsearch(1, #text_KIB, text_KIB, "прод|проп|обнов")) // если слово найдено
{
regexstart(#Pos_start); // узнали позицию первого символа
messagebox(Pos_start);
//mousemove(symbolxpos(Pos_start), symbolypos(Pos_start)); // добавить начальные координаты из readtext
}
 
 Top
konctantin777
Отправлено: 12 Мая, 2019 - 21:13:26
Post Id



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


Покинул форум
Сообщений всего: 1134
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Не понимаю. Если 1м стоит "обнов", то она ищется, а "бою" нет. Если их поменять, то "бою" ищется, а "обнов нет.
Код (Отобразить)


Ставлю messagebox(text_KIB); в начале и в конце. В начале отображает всё корректно, а который в конце функции показывает пустое поле...

(Отредактировано автором: 12 Мая, 2019 - 21:16:33)

 
 Top
Zireael
Отправлено: 12 Мая, 2019 - 21:31:44
Post Id



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


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




Потому что результат поиска записывается в ту же переменную.
CODE:
string text_KIB="Какой - то текст проп распознался";
if (regexsearch(1, #text_KIB, text_KIB, "прод|проп|обнов"))messagebox(text_KIB); // если найдется, то
// text_KIB будет содержать 'проп'
// т. е. искать другие слова в этой переменной уже нет смысла

Поэтому результат поиска надо записывать в другую переменную.
CODE:
string text_KIB="Какой - то текст проп распознался";
string text_KIB2;
if (regexsearch(1, #text_KIB2, text_KIB, "прод|проп|обнов"))messagebox(text_KIB2);
messagebox(text_KIB); // осталось без изменений

 Цитата:
"прод | проп | пере | нагр | бой | бою | долж | грать"

Пробелы не допустимы, если они не участвуют в поиске.
Если text_KIB="проп", то такой шаблон "прод | проп | обнов" не найдёт слово, потому что искать будет ' проп ' (с пробелами вначале и конце слова).
 
 Top
007wan
Отправлено: 22 Мая, 2019 - 12:31:51
Post Id



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


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




 Zireael пишет:
char c[10];
string s="";
if(regexsearch(1, #s, format(#c[0]), "^Н+$"))messagebox("Нашли");
Не работает.
(Добавление)
CODE:
char c[5];
string s="орролрлрл";
if(regexsearch(1, #s, format(#c[0]), "^Н+$"))
{
messagebox("Нашли");
}
else
{
messagebox("НЕ нашли");
}

Любой текст и выдает "Нашли"
 
 Top
Zireael
Отправлено: 22 Мая, 2019 - 12:34:46
Post Id



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


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




 Цитата:
format(#c[0])

Так в массив ничего и не скопировано. strcpy().
 
 Top
007wan
Отправлено: 22 Мая, 2019 - 12:34:47
Post Id



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


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




Тоже самое
CODE:
char c[10];
string s="123456789089890";
if(regexsearch(1, #s, format(#c[0]), "^Н{3}"))messagebox("Нашли");

(Добавление)
 Zireael пишет:
Так в массив ничего и не скопировано. strcpy().
Ай, думал тут это не недо.
(Добавление)
И чё. такой же 0 результат.
CODE:
char c[10];
string s="123456789089890";
strcpy(#c[0], s);
if(regexsearch(1, #s, format(#c[0]), "^Í{3}"))messagebox("Íàøëè");
 
 Top
Kibor
Отправлено: 22 Мая, 2019 - 12:44:53
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 007wan пишет:
char c[10];
string s="123456789089890";
strcpy(#c[0], s);


CODE:
char c[10];
string s="123456789089890";
strcpy(#c[0], s);
messagebox (format(#c[0]));


CODE:
char c[10];
string s="123456789";
strcpy(#c[0], s);
messagebox (format(#c[0]));


CODE:
string s="123456789089890";
new char c[size(s)+1];
strcpy(#c[0], s);
messagebox (format(#c[0]));
 
 Top
007wan
Отправлено: 22 Мая, 2019 - 12:48:20
Post Id



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


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




Kibor , Я думал можно вводить хоть миллионный текст, а брать будет 10 символов из этой строки, а потом уже сравнивать. Это не правильно.
"НННННННН", а их количество нам неизвестно, т.е надо взять первые 3-5 символов.
(Добавление)
Вобще "НННННННННННННН..." это пустой текст? Тоже самое что и ""?
 
 Top
Kibor
Отправлено: 22 Мая, 2019 - 12:58:01
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 007wan пишет:
Я думал можно вводить хоть миллионный текст, а брать будет 10 символов из этой строки, а потом уже сравнивать. Это не правильно.

Правильно.
Когда используется копирование целой строки, программист должен быть уверен что в чаре вся строка.
Для этого есть проверка что вернула функция strcpy
CODE:
messagebox (strcpy(#c[0], s));


А если вы такое сделаете в другом языке, то получите вылет программы вообще. Это в Кибор он просто не запишет, так как знает на сколько массив.
 
 Top
007wan
Отправлено: 22 Мая, 2019 - 13:01:23
Post Id



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


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




Так я не понял. Какой вариант правильный? Мне что писать все 255 символов "Н" в переменную?
 
 Top
Страниц (25): « 1 2 3 [4] 5 6 7 8 9 » В конец
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


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




Powered by