Можно использовать str_extract
для извлечения подстроки, а затем обернуть na.omit
, чтобы удалить элементы NA
, которые появляются, когда нет совпадения для строки. Здесь мы используем обход регулярных выражений для проверки шаблона [SQ]
, который предшествует другим символам, для извлечения тех символов, которые следуют за ним
library(stringr)
as.vector(na.omit( str_extract(df, "(?<=\\[SQ\\]).*")))
#[1] "Nice message1" "Nice message2" "Nice message3"
Если это должна быть одна строка, то str_c
для свертывания строки
str_c(na.omit( str_extract(df, "(?<=\\[SQ\\]).*")), collapse = '. ')
#[1] "Nice message1. Nice message2. Nice message3"
данные
df <- c("[Mi][OD][SQ]Nice message1.", "[Mi][OD][SQ]Nice message2.",
"[RO] ERROR: Could not SQLExecDirect 'SELECT * FROM ", "[Mi][OD][SQ]Nice message3."
)