Я изучаю R и пытаюсь использовать регулярные выражения для извлечения конкретного текста. Я хотел бы получить число и единицу измерения из рецепта конкретного ингредиента.
Например, для следующего текста:
text <- c("0.5 Tb of butter","3 grams (0.75 sticks) of chilled butter","2 tbs softened butter", "0.3 Tb of milk")
Я хотел бы извлечь числа и единицы, относящиеся только к маслу, то есть:
0.5 Tb
3 grams
2 tbs
Я думаю, что это лучше всего сделать с помощью регулярных выражений, но я довольно новичок в этом, поэтому я немного борюсь.
Используя str_match, я могу получить число перед определенной единицей, как это:
str_match(text, "\\s*(\\d+)\\s*Tb")
[,1] [,2]
[1,] "5 Tb" "5"
[2,] NA NA
[3,] NA NA
[4,] "3 Tb" "3"
Но как я могу получить только те значения, которые относятся к маслу и для диапазона единиц. Можно ли составить список возможных единиц (то есть грамм, тбс, тб и т. Д.) И попросить их сопоставить с любым из них (чтобы в этом примере граммы соответствовали, но не соответствовали палкам)?
Или, возможно, это было бы лучше сделать с какой-то петлей? Я мог бы поместить каждое предложение в фрейм данных, пройтись по каждой строке, спрашивая, есть ли в строке «сливочное масло», найти число в нем и извлечь число и следующее за ним слово, которое должно быть единицей измерения.
Спасибо за помощь.