#r #pattern-matching
#r #сопоставление с образцом
Вопрос:
У меня есть следующий образец текста, и я хочу извлечь из текста только машинное обучение.
text <- c("Machine Learning is my fav topic.", "I love machinelearning.")
ifelse((found <- regexpr("\sMachine Learning", text,
perl =TRUE)) !=-1, substring(text, found,
found attr(found,"match.length")), "nothing found")
Но это возвращает меня..
"nothing found" "nothing found"
Я должен получить результат в виде:
"Machine Learning", "machinelearning"
Ответ №1:
(?i)
Делает регулярное выражение нечувствительным к регистру. Используйте шаблон ‘Machine’, за которым следует ноль или более пробелов ( \s*
), за которым следует ‘Learning’
library(stringr)
unlist(str_extract_all(text, "(?i)Machine\s*Learning"))
#[1] "Machine Learning" "machinelearning"
Ответ №2:
У меня есть 2 балла, пожалуйста, смотрите ниже:
1) Когда вы хотите выполнить поиск по обеим упомянутым вами фразам, вы должны использовать выражение как «machine s?обучение». Чем? после s пробел игнорируется.
2) Используйте regexpr для поиска соответствия, затем используйте функцию regmatches () для извлечения текста.
> text <- c("Machine Learning is my fav topic.", "I love machinelearning.")
> m <- regexpr("machine\s?learning", text, perl=TRUE, ignore.case = TRUE)
> regmatches (text, m)
[1] "Machine Learning" "machinelearning"