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

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

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

> Без описания
phpmax
Отправлено: 18 Февраля, 2020 - 21:21:43
Post Id



Пользователь
Прохожий


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




Добрый вечер. Подскажите пожалуйста, какой функцией обернуть строку поиска, чтобы все особенные символы автоматически были экранированы?

CODE:

string P[10];
string T="привет (привет)";

string R= "привет (п"; //Не находит
string R= "привет "; //Находит
int k=regexsearch(-1, #P[0], T, R);

messagebox(format(k));


Я понимаю, что проблема решается добавлением обратного слеша, но строка динамическая, надо бы автоматом это сделать, потому что еще реагирует на сами слеши, если есть в тексте, на квадратные скобки и т.д.

P.S. мне не обязательно видеть сколько результатов найдено, сами результаты и т.д., важно знать, есть фрагмент в тексте или нет, возможно использование более простой функции поиска, без регулярных выражений

(Отредактировано автором: 18 Февраля, 2020 - 21:24:08)

 
 Top
Nikanr
Отправлено: 18 Февраля, 2020 - 21:51:44
Post Id



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


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




Если текст считывается с помощью readtext, можно просто обучить базу на другой символ при обнаружении "(". Но в остальном - сомневаюсь что есть вариант автоэкранирования без какого-нибудь изощренного костыля)
 
 Top
phpmax
Отправлено: 18 Февраля, 2020 - 21:55:59
Post Id



Пользователь
Прохожий


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




 Nikanr пишет:
Если текст считывается с помощью readtext, можно просто обучить базу на другой символ при обнаружении "(". Но в остальном - сомневаюсь что есть вариант автоэкранирования без какого-нибудь изощренного костыля)

во многих языках программирования есть такая функция, думаю и тут должна быть. даже если ее нет, то написать можно, для профи это дело двух минут, да и уверен готовая может быть, ждем гуру)
(Добавление)
пока сделал так, но буду благодарен за более правильный вариант

CODE:
regexreplace(-1, #R, R, "[\(]", "\(");
regexreplace(-1, #R, R, "[\[]", "\[");
regexreplace(-1, #R, R, "[\.]", "\.");

(Добавление)
CODE:
regexreplace(-1, #R, R, "[\.]", "\.");

лишнее
 
 Top
Zireael
Отправлено: 19 Февраля, 2020 - 00:41:51
Post Id



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


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




CODE:
string T="привет (привет)"; // строка
string R= "привет (п"; // что искать

if(find(T, R)) // вызов функции поиска
{
// нужные действия
messagebox("Текст найден");
}
else messagebox("Текст не найден");



function find(string s, string regex)
{
string P;
// экранирование символов ()?!
regexreplace(-1, #regex, regex, "([\(\)\?\!])", "\$1"); // добавить нужные символы в квадратные скобки через \

if(regexsearch(1, #P, s, regex))return 1; // если найдено функция вернёт 1
return 0; // иначе 0
}
 
 Top
phpmax
Отправлено: 19 Февраля, 2020 - 10:06:58
Post Id



Пользователь
Прохожий


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




спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by