1) Возникает вопрос, о чем здесь идет речь, поэтому этот первый параметр удаляет первые две строки:
sub("^categor([^\n]*\n){2}", "", text)
## [1] "At the end of the day, the criminal Valjean escaped once more."
Если деталь categor
не имеет значенияэто так:
tail(strsplit(text, "\n")[[1]], -2)
## [1] "At the end of the day, the criminal Valjean escaped once more."
2) Если требуется удалить любую строку формы ...:....\n
, где символы перед двоеточием в каждой строке должны быть символами слова:
gsub("\\w+:[^\n]+\n", "", text)
## [1] "At the end of the day, the criminal Valjean escaped once more."
или
gsub("\\w+:.+?\n", "", text)
## [1] "At the end of the day, the criminal Valjean escaped once more."
или
grep("^\\w+:", unlist(strsplit(text, "\n")), invert = TRUE, value = TRUE)
## [1] "At the end of the day, the criminal Valjean escaped once more."
3) или если мы хотим удалить строки, имеющие только определенные теги:
gsub("(categories|Tags):.+?\n", "", text)
## [1] "At the end of the day, the criminal Valjean escaped once more."
4) Использование read.dcf
также может быть интересно, если вы также хотите захватить теги.
s <- unlist(strsplit(text, "\n"))
ix <- grep("^\\w+:", s, invert = TRUE)
s[ix] <- paste("Content", s[ix], sep = ": ")
out <- read.dcf(textConnection(s))
, предоставив эту матрицу из 3 столбцов:
> out
categories Tags
[1,] "crime, punishment, france" "valjean, javert,les mis"
Content
[1,] "At the end of the day, the criminal Valjean escaped once more."