Регулярное выражение для поиск товаров и их кол-во в тексте
Никак не могу придумать регулярку для поиск товаров в тексте.
Например:
Нам нужно купить завтра к вечеру
1. бананы 10 шт
2. картошка 20 кг
3. капуста 1кг
ах да, а еще нужна
вода миниральная 5 л
В тексте товар всегда начинается с новой строки, и я могу каждую строку проверить на то - это товарная позиция или нет, но перед товаром может быть какое-то значение (чаще всего номер), а может и не быть. Оптимально высчитывать по еденице измерения. Вот только не пойму как сделать.
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
Под все случаи невозможно подстроится, но конкретно для вашего примера подойдёт следующее регулярное выражение:
/^(?:[^a-zа-яё]*)(?<good>[a-zа-яё ]+?\d+\s?(шт|кг|л))$/gim
Пример на JS:
let rExp = /^(?:[^a-zа-яё]*)(?<good>[a-zа-яё ]+?\d+\s?(шт|кг|л))$/gim;
let sTxt = `Нам нужно купить завтра к вечеру
1. бананы 10 шт
2. картошка 20 кг
3. капуста 1кг
ах да, а еще нужна
вода миниральная 5 л`;
console.log( [...sTxt.matchAll(rExp)].map(el => el.groups.good) );