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

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

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

> Без описания
Kibor
Отправлено: 17 Октября, 2023 - 09:30:48
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8110
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 Цитата:
string P[10];
string T="какое то число +10.5 еще одно число 12.5 и еще число -15 и еще ну а вот то число не должны найти 25 еще не найдено"; // строка, в которой ищем
string R="(?<=чи(.*)+)([0-9]|\.|\+|-)+(?=(.*)+еще)";
int k=regexsearch(10, #P[0], T, R);
for (int n=0; n<k; n++)
{
messagebox (P[n]);
}


Кто может составить регулярку, которая находит числа между
чи
и
еще

Но при условии что эти чи и еще удалены от искомого числа на не более 10 символов.

То есть между чи и числом могут быть любые символы, но не более 10
Зеленое что должно найтись, красное не должно.

{0, 10} что то не работает..
(Добавление)
Короче так

* была лишняя.
CODE:

string P[10];
string T="какое то число +10.5 еще одно число 12.5 и еще число -15 и еще ну а вот то число не должны найти 25 еще не найдено"; // строка, в которой ищем
string R="(?<=чи(.){0,10})([0-9]|\.|\+|-)+(?=(.){0,10}еще)";
int k=regexsearch(10, #P[0], T, R);
for (int n=0; n<k; n++)
{
messagebox (P[n]);
}
 
 Top
Zireael
Отправлено: 17 Октября, 2023 - 11:29:21
Post Id



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


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




Чуть короче:
CODE:
string R="(?<=чи.{0,10})[\d.+-]+(?=.{0,10}еще)";
 
 Top
Kibor
Отправлено: 17 Октября, 2023 - 14:11:55
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8110
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 Zireael пишет:
Чуть короче:

Конечно. Меня интересовал отлов ошибки.
 
 Top
Kibor
Отправлено: 17 Октября, 2023 - 21:37:53
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8110
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Итак...
Не совсем корректное выражение..
Дает сбои.

Надо искать любые числа
+5
-5
5
+5.2
-5.2
5.2

К примеру в таком случае сбой
CODE:
string T="line-list-dops-item-row-sections-block__right-kf ng-star-inserted^"> +1.9 </div><!+---><!-++-></div><!---+></div><div";
string P[10];
string R="(?<=sections-block__.{0,45})[\d.+-]+(?=.{0,10}\/div>)";
int k=regexsearch(10, #P[0], T, R);
for (int n=0; n<k; n++)
{
messagebox (P[n]);
}


Можно конечно сделать так и будет работать корректно, но очень как то длинно..
CODE:
string T="line-list-dops-item-row-sections-block__right-kf ng-star-inserted^"> +1.9 </div><!+---><!-++-></div><!---+></div><div";
string P[10];
string R="(?<=sections-block__.{0,45})((\+\d+\.\d+)|(\-\d+\.\d+)|(\d+\.\d+)|(\+\d+)|(\-\d+)|(\d+))(?=.{0,10}\/div>)";
int k=regexsearch(10, #P[0], T, R);
for (int n=0; n<k; n++)
{
messagebox (P[n]);
}


Как покороче?

И интересно протестировать скорость, при таком и коротком варианте, если будет.
 
 Top
Zireael
Отправлено: 18 Октября, 2023 - 02:54:20
Post Id



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


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




CODE:
string R="(?<=sections-block__.{0,45})[+-]?\d+(\.\d+)?(?=.{0,10}\/div>)";
 
 Top
Kibor
Отправлено: 18 Октября, 2023 - 06:28:16
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8110
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




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


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




Powered by