Мы можем использовать регулярное выражение в качестве регулярного выражения, то есть, чтобы соответствовать слову, сопровождаемому символом @
library(stringr)
str_extract(text, "(?<=@)\\w+")
#[1] "pisa" "italy"
Это также может быть
str_extract(text, "(?<=@)[^, ]+")
#[1] "pisa" "italy"
Или в base R
, используя sub
, захватить слово после @
и в замене указать обратную ссылку (\\1
) захваченной группы
sub("^@(\\w+).*", "\\1", text)
#[1] "pisa" "italy"
Также другой вариант - regmatches/regexpr
regmatches(text, regexpr('(?<=@)\\w+', text, perl = TRUE))
#[1] "pisa" "italy"
Или с trimws
trimws(text, whitespace = '@|,? .*')
#[1] "pisa" "italy"
data
text <- c("@pisa, what's up?", "@italy @spain we're praying for you.")