2016-10-16 4 views
0

Я хочу, чтобы извлечь два слова, предшествующего Twitter @handleExtract 2 триместра до специфического характера

x <- c("this is a @handle", "My name is @handle", "this string has @more than one @handle") 

Выполнения следующих отрывкам всего текста предшествующего только последний @handle, мне это нужно для всех @ ручки

(ext <- stringr::str_extract_all(x, "^.*@")) 
[[1]] 
[1] "this is a @" 

[[2]] 
[1] "My name is @" 

[[3]] 
[1] "this string has @more than one @" 
+0

вы, вероятно, хотите 'str_split' – shayaa

ответ

2

вы можете использовать квантор {2}, чтобы указать, сколько слов вы хотите извлечь перед символом @. Слово состоит из символов слова \\w+ и границы слова, которая в вашем случае будет пробелами. И мы можем использовать trimws функцию, чтобы удалить ненужные начальные и конечные пробелы:

library(stringr) 
lapply(str_extract_all(x, "(\\w+\\s+){2}([email protected])"), trimws) 

#[[1]] 
#[1] "is a" 

#[[2]] 
#[1] "name is" 

#[[3]] 
#[1] "string has" "than one"