Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 5.44 Регулярные выражения

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

31. Zireael - 12 Мая, 2019 - 11:04:20 - перейти к сообщению
 Цитата:
Я так думаю нужно 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
}
32. konctantin777 - 12 Мая, 2019 - 13:13:26 - перейти к сообщению
Не понимаю. Если 1м стоит "обнов", то она ищется, а "бою" нет. Если их поменять, то "бою" ищется, а "обнов нет.
Код (Отобразить)


Ставлю messagebox(text_KIB); в начале и в конце. В начале отображает всё корректно, а который в конце функции показывает пустое поле...
33. Zireael - 12 Мая, 2019 - 13:31:44 - перейти к сообщению
Потому что результат поиска записывается в ту же переменную.
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="проп", то такой шаблон "прод | проп | обнов" не найдёт слово, потому что искать будет ' проп ' (с пробелами вначале и конце слова).
34. 007wan - 22 Мая, 2019 - 04:31:51 - перейти к сообщению
 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("НЕ нашли");
}

Любой текст и выдает "Нашли"
35. Zireael - 22 Мая, 2019 - 04:34:46 - перейти к сообщению
 Цитата:
format(#c[0])

Так в массив ничего и не скопировано. strcpy().
36. 007wan - 22 Мая, 2019 - 04:34:47 - перейти к сообщению
Тоже самое
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("Íàøëè");
37. Kibor - 22 Мая, 2019 - 04:44:53 - перейти к сообщению
 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]));
38. 007wan - 22 Мая, 2019 - 04:48:20 - перейти к сообщению
Kibor , Я думал можно вводить хоть миллионный текст, а брать будет 10 символов из этой строки, а потом уже сравнивать. Это не правильно.
"НННННННН", а их количество нам неизвестно, т.е надо взять первые 3-5 символов.
(Добавление)
Вобще "НННННННННННННН..." это пустой текст? Тоже самое что и ""?
39. Kibor - 22 Мая, 2019 - 04:58:01 - перейти к сообщению
 007wan пишет:
Я думал можно вводить хоть миллионный текст, а брать будет 10 символов из этой строки, а потом уже сравнивать. Это не правильно.

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


А если вы такое сделаете в другом языке, то получите вылет программы вообще. Это в Кибор он просто не запишет, так как знает на сколько массив.
40. 007wan - 22 Мая, 2019 - 05:01:23 - перейти к сообщению
Так я не понял. Какой вариант правильный? Мне что писать все 255 символов "Н" в переменную?

Powered by ExBB FM 1.0 Final