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

Страниц (25): В начало « ... 17 18 19 20 21 22 23 [24] 25 »
 

231. Martin - 18 Мая, 2023 - 00:30:37 - перейти к сообщению
Как составить регулярное выражение чтобы оно находило фразу полностью в строке не реагируя на не нужные например мне нужно найти фразу "Я пошел в магазин" но оно так же найдет строку с содержанием
"Я пошел в магазин за молоком"

 Цитата:

Я пошел в магазин за яйцами
Я пошел в магазин за молоком
Я пошел в магазин
Я пошел в магазин за хлебом


к примеру чтобы из этого текста выделялось только строка Я пошел в магазин
232. Zireael - 18 Мая, 2023 - 03:20:42 - перейти к сообщению
CODE:
string Text = "Я пошел в магазин за молоком";
if(regexsearch(1, #Text, Text, "^Я пошел в магазин$"))messagebox("++++");
else messagebox("Не найдено");

Text = "Я пошел в магазин";
if(regexsearch(1, #Text, Text, "^Я пошел в магазин$"))messagebox("++++");
else messagebox("Не найдено");

^ - означает начало строки.
$ - конец строки.
233. Gorago - 18 Мая, 2023 - 04:16:32 - перейти к сообщению
Zireael , не работает со списком,
например копирую в буфер этот текст

 Цитата:
Я пошел в магазин за яйцами
Я пошел в магазин за молоком
Я пошел в магазин
Я пошел в магазин за хлебом


Запускаю код
CODE:
string Text;
sleep(100);
readclipboard(Text);
sleep(100);

if(regexsearch(1, #Text, Text, "^Я пошел в магазин$"))messagebox("++++");
else messagebox("Не найдено");


не находит
234. Zireael - 18 Мая, 2023 - 04:32:32 - перейти к сообщению
 Цитата:
не работает со списком

Тут нет списка, есть многострочный текст.
CODE:
string Text;
readclipboard(Text);
messagebox(Text);
if(regexsearch(1, #Text, Text, "^Я пошел в магазин$", MULTILINE))messagebox("++++");
else messagebox("Не найдено");
235. Kibor - 17 Октября, 2023 - 11:45:33 - перейти к сообщению
Доработал 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)));
}
236. konctantin777 - 27 Ноября, 2023 - 11:09:59 - перейти к сообщению
Здравствуйте.
Подскажите как определить, что в конце текста есть 666. Бывает от одного знака до 8.
CODE:
string s="2";
или
string s="63666";
237. Zireael - 27 Ноября, 2023 - 17:29:51 - перейти к сообщению
 Цитата:
как определить, что в конце текста есть 666.

CODE:
string s="63666";

string tmp;
if(regexsearch(1, #tmp, s, "666$"))messagebox("+++");
else messagebox("---");
238. konctantin777 - 10 Января, 2024 - 09:54:26 - перейти к сообщению
Здравствуйте.
Подскажите как найти с определённым количеством символов ? В данном примере "1-2 +3"
В виз редакторе делаю
CODE:
string текст= "Текст ++в !котором ищем? --по регулярн1ому ++!выражен ? ию2-1-2 +3+!Текст в ?котором --выраж3ение";
в блоке regexsearch
"((1)(.*)(2)(.*)(3)){1,10}"

Ищет всё
239. Zireael - 10 Января, 2024 - 16:40:27 - перейти к сообщению
 Цитата:
В данном примере "1-2 +3"

А в другом примере будут другие данные? Что искать надо?
240. konctantin777 - 11 Января, 2024 - 05:45:37 - перейти к сообщению
Есть блок кода со страницы. Найти есть ли 1я часть (айди игрока)+2я часть(номерИгрока)+3я часть(состояние игрока) и тд в этом блоке. Между ними может быть разное количество символов. Таких блоков несколько. Думаю если поставить, что всего в найденном не более 500 символов, то будет находить только в одном блоке, а не 1ю часть из 1го блока, 2ю из 3го, 3ю часть вообще с конца.
(Добавление)
Т.е. найти "символы"+неизвестное количество символов+"ещё символы"+неизвестное количество символов+"ещё другие символы"
Если то что нашлось, уместилось в 500 знаков, значит нашли, что надо.

Powered by ExBB FM 1.0 Final