Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Составить регулярное выражение, до найденного любые символы но не более 10 знаков

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

1. Kibor - 17 Октября, 2023 - 01:30:48 - перейти к сообщению
 Цитата:
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]);
}
2. Zireael - 17 Октября, 2023 - 03:29:21 - перейти к сообщению
Чуть короче:
CODE:
string R="(?<=чи.{0,10})[\d.+-]+(?=.{0,10}еще)";
3. Kibor - 17 Октября, 2023 - 06:11:55 - перейти к сообщению
 Zireael пишет:
Чуть короче:

Конечно. Меня интересовал отлов ошибки.
4. Kibor - 17 Октября, 2023 - 13:37:53 - перейти к сообщению
Итак...
Не совсем корректное выражение..
Дает сбои.

Надо искать любые числа
+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]);
}


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

И интересно протестировать скорость, при таком и коротком варианте, если будет.
5. Zireael - 17 Октября, 2023 - 18:54:20 - перейти к сообщению
CODE:
string R="(?<=sections-block__.{0,45})[+-]?\d+(\.\d+)?(?=.{0,10}\/div>)";
6. Kibor - 17 Октября, 2023 - 22:28:16 - перейти к сообщению
Проверил по скорости. Практически одинаково.

Powered by ExBB FM 1.0 Final