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

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

 Страниц (1): [1]   

> Без описания
Nikanr
Отправлено: 04 Января, 2020 - 15:36:43
Post Id



Пользователь
Специалист


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




Имеется строка следующего типа: [bf1][][bf2bf2]

Нужно записать bf1 и bf2bf2 в скобках так, что бы они оказались в ячейках массива string следующим образом:

CODE:
a[0]="bf1";
a[1]="";
a[2]="bf2bf2";


Пробовал такую регулярку:

CODE:
regexsearch(sizearray(a), #a[0], t, "(?<=\[).*?(?=\])");


Почему-то ищет только все то, что до пустоты в скобках.

(Отредактировано автором: 04 Января, 2020 - 15:37:55)

 
 Top
Zireael
Отправлено: 04 Января, 2020 - 16:04:39
Post Id



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


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




Искать текст вместе со скобками, а потом их удалять.
CODE:
string t="[bf1][][bf2bf2]";
string a[3];

regexsearch(sizearray(a), #a[0], t, "\[.*?\]"); // текст в квадратных скобках
for(int i=0; i<sizearray(a); i++)regexreplace(-1, #a[i], a[i], "\[|\]", ""); // удалить скобки

messagebox(a[0]);
messagebox(a[1]);
messagebox(a[2]);
 
 Top
Nikanr
Отправлено: 18 Февраля, 2020 - 19:57:16
Post Id



Пользователь
Специалист


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




Имеется строка rb и массив str в который нам нужно поместить soloveyodin в первую ячейку и golybdva во вторую. Проблема в том что слова solovey и golyb могут меняться по длине и содержанию. Слова odin и dva остаются такими какие они есть и всегда следуют после условных соловья/голубя. Единственное что еще может поменяться это порядок (например soloveyodingolybdva вместо golybdvasoloveyodin). В строку так же могут попадать либо только golybdva либо только soloveyodin и поместить их так же нужно либо в ячейку массива 1(soloveyodin) или в ячейку массива 2(golybdva). Можно как-нибудь решить это одной-двумя регулярками? В голову ничего не лезет кроме кода который привел ниже: (за исключением единичного вхождения соловья/голубя)

CODE:
string rb="(golybdvasoloveyodin)", str[2];


if(regexsearch(1, #str[0], rb, "dva\)")){ //обнаружено слово dva

regexsearch(1, #str[0], rb, "(?<=\()[a-z]*?odin");

regexsearch(1, #str[1], rb, "(?<=odin)[a-z]*?dva");

}
else{

regexsearch(1, #str[1], rb, "(?<=\()[a-z]*?dva");

regexsearch(1, #str[0], rb, "(?<=dva)[a-z]*?odin");

}

messagebox(str[0]+" "+str[1]);


P:S не создавал новую тему что бы не засорять форум

(Отредактировано автором: 18 Февраля, 2020 - 20:02:19)

 
 Top
Zireael
Отправлено: 19 Февраля, 2020 - 01:32:43
Post Id



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


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




CODE:
string rb="(golybdvasoloveyodin)", str[2];

find(rb);
messagebox("str0: "+str[0]+formatic(13)+formatic(10)+"str1: "+str[1]);



function find(string s)
{
string temp;
regexreplace(-1, #temp, s, "[\(\)]", ""); // удалить скобки
if(regexsearch(2, #str[0], temp, ".+?(odin|dva)")) // поиск
{
if(regexsearch(1, #temp, str[0], "dva")){temp=str[0]; str[0]=str[1]; str[1]=temp}; // меняем местами если dva в str[0]
}
}
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by