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

Страниц (25): В начало « ... 10 11 12 13 [14] 15 16 17 18 ... » В конец
 

131. Zireael - 01 Декабря, 2019 - 04:45:08 - перейти к сообщению
CODE:
string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Bot One{Start_Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Two{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Three{Start Script: False|Visual Window: False};";

//messagebox(s);
string row[99], text_box, text[99];
int count_box=regexsearch(sizearray(row), #row[0], s, "[^\r\n]+", MULTILINE);
messagebox(count_box);
for(int i=0; i<count_box; i++)
{
if(regexsearch(1, #text_box, row[i], "^[^\{]+"))
{
messagebox(text_box);
regexreplace(1, #row[i], row[i], text_box, "");
regexreplace(1, #row[i], row[i], ";$", "");

int count_text=regexsearch(sizearray(text), #text[0], row[i], "[^\{\}\|]+");
for(int j=0; j<count_text; j++)
{
messagebox(text[j]);
}
}
}
132. 007wan - 01 Декабря, 2019 - 06:06:15 - перейти к сообщению
 Zireael пишет:
CODE:
string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Bot One{Start_Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Two{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Three{Start Script: False|Visual Window: False};";

//messagebox(s);
string row[99], text_box, text[99];
int count_box=regexsearch(sizearray(row), #row[0], s, "[^\r\n]+", MULTILINE);
messagebox(count_box);
for(int i=0; i<count_box; i++)
{
if(regexsearch(1, #text_box, row[i], "^[^\{]+"))
{
messagebox(text_box);
regexreplace(1, #row[i], row[i], text_box, "");
regexreplace(1, #row[i], row[i], ";$", "");

int count_text=regexsearch(sizearray(text), #text[0], row[i], "[^\{\}\|]+");
for(int j=0; j<count_text; j++)
{
messagebox(text[j]);
}
}
}
Спасибо!
133. 007wan - 07 Декабря, 2019 - 05:47:17 - перейти к сообщению
__________
Есть текст:
CODE:
string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Bot One{Start_Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Two{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Three{Start Script: False|Visual Window: False};";

Как мне из этого текста "вырвать" кусок, например, "Editing Writes: 0" или любой другой, который укажу и заменить его нарпимер на "Editing Writes: 1".

Предыдущий код только все по фрагментам раскладывает, а я хочу не по фрагментом собирать и разбирать текст, а просто заменить существующий текст, при условии, что он уже есть(узнать есть ли он на том месте или нету"
134. Zireael - 07 Декабря, 2019 - 09:19:01 - перейти к сообщению
 Цитата:
заменить его

regexreplace.
135. 007wan - 07 Декабря, 2019 - 11:08:23 - перейти к сообщению
 Zireael пишет:
 Цитата:
заменить его

regexreplace.
не совсем понимаю какие флаги мне понадобятся

^
|
Из того текста, что я давал ранее нужно найти этот текст(из всего теуста. Например, найдет"Visual Window: False" если он найден(отдельная переменная) , то заменить на "Visual Window: True", но таких же несколько... Встает вопрос о том "как заменить не все такие повторяющиеся фрагменты, а например, последний или первый только(управлять переменной - индекс) ,как то"

Этот пример ответит на сразу 3 вопроса.
136. 007wan - 08 Декабря, 2019 - 07:21:02 - перейти к сообщению
Можно пример, как найти фразу во всем тексте если найден(-ы), то указать сколько таких найдено и потом заменить такой [1] элемент.

Пример:
Текст:
 Цитата:
string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Bot One{Start_Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Two{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Three{Start Script: False|Visual Window: False};";

Найти:
"Visual Window: False ", все посчитать сколько их.
Заменить [1] такой фрагмент, по факту сдесь их 3, найдено тоже 3, но индексы всегда начинаются с [0] - первый соотвественно и [2] последний.
Результат:
Заменит такой текст, где Bot Two
(Добавление)
 Цитата:
Заменить [1] такой фрагмент
на Visual Window: True
137. Zireael - 08 Декабря, 2019 - 08:16:53 - перейти к сообщению
 Цитата:
string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Bot One{Start_Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Two{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Three{Start Script: False|Visual Window: False};";

И зачем хранить данные в строке? Используй массивы.
138. 007wan - 08 Декабря, 2019 - 08:45:41 - перейти к сообщению
 Zireael пишет:
 Цитата:
string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Bot One{Start_Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Two{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Three{Start Script: False|Visual Window: False};";

И зачем хранить данные в строке? Используй массивы.
И как?
139. 007wan - 09 Декабря, 2019 - 02:46:06 - перейти к сообщению
 Zireael пишет:
И зачем хранить данные в строке? Используй массивы.
Я массивы и использую, а сохраняться они будут по массивно каждая...

Всмысле в массивах я не понимаю не много...

Текст передается в буфер для того, что бы другая программа его считывала(другая exe) и выполняла нужные действия.
----
Ну пожалуйста можно код.
Текст (Отобразить)

Принцип работы:
Ищет текст, который укажу. Для примера возьмем "Visual Window: False"
-Если такой существует и их больше одного, то заменить такой текст с [1] элементом(в данном случаи он является вторым по счёту) на текст "Visual Window: True".
140. Zireael - 09 Декабря, 2019 - 03:53:47 - перейти к сообщению
 Цитата:
то заменить такой текст с [1] элементом(в данном случаи он является вторым по счёту) на текст "Visual Window: True".

Допустим заменили второе совпадение, т. е. останется два "Visual Window: False" , для первого и для третьего Bot. Т. е. в следующий раз указав [1] нужно будет заменить "Visual Window: False" для Bot Three?

Powered by ExBB FM 1.0 Final