Регулярное выражение для парсинга цены. Парсить товары с ценой выше X

Помогите плз составить выражение регулярное для парсинга. В модуле парсинга есть фильтр. Фильтр проверяет спарсенное значение и если оно подходит, то парсит товар. В этом фильтре можно прописать совпадение по регулярному выражению. Мне нужно спарсить только те товары, которые выше 15000 рублей. Как может выглядеть такое выражение? Значение. по которому идет проверка фильтра без пробелов и знаков, просто цена в виде числа.


Ответы (1 шт):

Автор решения: PotroNik

Регулярными выражениями пользоваться для диапазона цены не самое лучшее решение. Но если другого выхода нет, то можно попробовать адаптировать вот такой regexp

(?(?=^\d{5}$)^(?:1[5-9]|[2-9]\d)\d{3}$|^[1-9]\d{5,}$)

Где (?(?=)|) некий аналог оператора ветвления по аналогии с if, т.е. если во вложенной скобке выражение истинно, сработает подбор шаблона до пайпа, иначе сработает шаблон после пайпа.
Проверяем что строка у нас равна пяти цифровым символам ^\d{5}$ где ^ - символ начала строки, а $ - означает конец строки, используется с параметром multiline.
Если выражение истинно, то переходи в эту часть (?:1[5-9]|[2-9]\d)\d{3}$ - начало строки, (цифра 1, после которой идет цифра в диапазоне от 5 до 9 или цифра в диапазоне от 2 до 9, после которой идет любая цифра), 3 любых цифры.
Если выражение было ложно, то переходим в эту часть ^[1-9]\d{5,}$ - начало строки, цифра в диапазоне от 0 до 9, 5 и более цифр в диапазоне от 0 до 5.


Важно, минусом данного способа будет то, что в случае если число начинается с 0, то оно автоматически исключается, даже если оно имеет значение выше 15000.


Пример работы regexp: regex101

→ Ссылка