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

Страниц (5): « 1 [2] 3 4 5 »
 

11. Kibor - 15 Марта, 2018 - 13:50:49 - перейти к сообщению
Добавил функцию replacetext - производит поиск и замену подстроки.
Ее описание в первом посту.
12. Zireael - 15 Марта, 2018 - 18:52:32 - перейти к сообщению
Ещё бы добавить в deletetext (или отдельную функцию) возможность удалить всё кроме цифр. Переносы строки при этом оставить.
13. Kibor - 16 Марта, 2018 - 00:58:41 - перейти к сообщению
Для этого надо спецсимволы добавить. Добавлю как будет время.
14. Dantes3000 - 18 Марта, 2018 - 12:17:40 - перейти к сообщению
как сделать такое:

стр="типа текст";
стр2="большой типа текст в котором есть текст стр";
if(стр есть в стр2) {что-то сделать}


я понял...надо в findtext границы указывать "большой" и "в котором"...или как-то иначе?
15. Kibor - 18 Марта, 2018 - 12:29:25 - перейти к сообщению
пробелы тоже символы. учитывать их надо.

CODE:
string TEXT="большой типа текст в котором есть текст стр";
char CTEXT[1000];
int nom, siz;
strcpy(#CTEXT[0], TEXT);


if (findtext(#CTEXT[0], #nom, #siz, "большой" & "в котором")!=-1)
{
//messagebox(format(#CTEXT[nom], siz));
if (format(#CTEXT[nom], siz)==" типа текст ")
{
messagebox("что то сделать");
}
}
16. Skycrew - 19 Марта, 2018 - 19:23:36 - перейти к сообщению
Вот этого я давно ждал. Большое спасибо!

Из пожеланий:
1) Было бы здорово добавить возможность указывать сразу строку string на вход (и в таком случае получать на выходе тоже string)
2) Было бы мега-круто добавить регулярные выражения!
17. Kibor - 20 Марта, 2018 - 00:41:51 - перейти к сообщению
2 в разработке. но нет времени закончить.
18. Skycrew - 22 Марта, 2018 - 17:36:26 - перейти к сообщению
 Kibor пишет:
2 в разработке. но нет времени закончить.


Отлично! Буду ждать.
19. Kibor - 27 Марта, 2018 - 02:26:16 - перейти к сообщению
Выкладываю на альфа тест регулярные выражения.
Пока только тест на баги. Функции не закончены.

Для вызова функции поиска в строке необходимо вызвать
findtexttest
Функция не подсвечивается.

Краткое описание.
Доступны константы:
CODE:
// NUM | RU | EN | MARK | SPEC | ALL | SPACE


Команды:
CODE:
/\ выделенное этими знаками будет отображаться в поиске.
По умолчанию границы - начало и конец найденного фрагмента.
Можно установить одну из меток. В таком случае будет отображаться от начала до метки или от метки до конца.
В последствие можно будеьт указывать несколько зон и они будут писаться в массив.

^ Знак исключения.
То есть ^NUM означает что любая цифра будет ошибкой.
^"абвгд"
Ставится перед словом. Не применяется к группе.

* Означает что символы в слове расматриваются как массив отдельных символов, а не как слово
*"аврора" означает что достаточно совпадения одной из букв этого слова
"аврора" необходимо точное вхождение всего слова
Для констант данный режим идет автоматически и не меняется.

! Означает что искомая фраза не может закончиться этим знаком даже если он присутствовал в середине слова.
milo@dom.hata.com.
"."!
Отсеет последнюю точку

[] групирует слова символы. Для истины достаточно совпадения одного из
[EN, NUM, *"-_"]

+ или число. Сколько необходимо совпавших символов или не известно.


Несколько примеров:
CODE:

string CTEXT="мыло первое:test_1@domen1tochka.com.Мыло@vtoroe второе:test_2@domen.mnogo.tochek.com."
+"мыло третье с ошибкой. Без зоны домена: test_3@error.финиш. Точки после мыла отсеются";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, [EN, NUM, *t]+, "@", [EN, NUM]+, ".", [EN, NUM, ".", "."!]+)==1)
{
messagebox ("!"+PR+"!");
}



string CTEXT="номер 52 телефона (097)-555 26 52 просто число 5 и число 78998434549 еще 097-555-26-52 и еще 097 555 26 52";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, ["(", NUM, ")"]+, [NUM, SPACE, "-", SPACE!]+)==1)
{
messagebox ("!"+PR+"!");
}


string CTEXT="текст этот внутри не покажет<>не покажет текст<>текст этот внутри покажет так"
+" как по 2 пары скобок по бокам<><>покажет текст<><>все";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, "<>"2, /ALL+\, "<>"2)==1)
{
messagebox ("!"+PR+"!");
}



string CTEXT="Найдет 2 мыла Васи. Вася имеет первое мыло Vasya@gmail.com. Петя имеет мыло petya@gmail.com. "
+"Вася имеет еще одно мыло Vaska-kot@gmail.com Точки после мыла отсеются. "
+"Вася еще имеет телефон 095 217 25. Но телефоне не мыло.";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, "Вася", ALL+, /[EN, NUM, *t]+, "@", [EN, NUM]+, ".", [EN, NUM, ".", "."!]\+)==1)
{
messagebox ("!"+PR+"!");
}




string CTEXT="Надо выбрать все телефоны без 2. Первый 097-555 76 51 Второй 097-555-26-52 Третий 027 525 26 52";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, [NUM, ^"2", SPACE, "-", SPACE!]11)==1)
{
messagebox ("!"+PR+"!");
}
20. Zireael - 27 Марта, 2018 - 07:22:03 - перейти к сообщению
Не лучше ли вынести обсуждение не законченной функции в отдельную тему? Кому оно надо читать потом о когда-то существовавших багах.
Потестил немного, в целом работает.
CODE:
string CTEXT="qwe 123 rty";
string PR;
while (findtexttest (#CTEXT, #PR, ALL+\, [NUM]+)==1) // всё до числа
{
messagebox (PR); // Второе сообщение лишнее.
}


Может уже есть что-то в планах, но внесу несколько предложений.
 Цитата:
+ или число. Сколько необходимо совпавших символов или не известно.

Добавить [NUM]2~5 или как-то так, т. е. число от 2 до 5 цифр или символов, в зависимости от синтаксиса.

Из-за того что * это 1 или больше (а не 0 или больше), как быть с ситуацией когда символ может как присутствовать, так и отсутствовать? Например: "123, Сумма: 456" и "123, Сумма:456". Найти число после "Сумма:", в одном случае есть пробел после "Сумма:", в другом нет.
Может добавить: ?"аврора" или ?SPACE. Т. е. 0 или больше. Получится "Сумма:", ?SPACE, /[NUM]+\

Планируется ли добавить символы начала и конца строки, границы слова?

Powered by ExBB FM 1.0 Final