2015-07-21 13 views
5

Sto cercando di ottenere il testo tra due parole in una frase.
Per esempio la frase è -Come ottenere il testo tra due parole in R?

x <- "This is my first sentence" 

Ora voglio il testo tra This e first che è is my. Ho provato varie funzioni da R come grep, grepl, pmatch, str_split. Tuttavia, non ho potuto ottenere esattamente quello che voglio.

Questo è il più vicino a quello che ho raggiunto con gsub.

gsub(".*This\\s*|first*", "", x) 

L'uscita che dà è

[1] "is my sentence" 

In realtà, quello che ho bisogno è solo

[1] "is my" 

Qualsiasi aiuto sarebbe apprezzato.

risposta

4

È necessario .* alla fine per indicare zero o più caratteri dopo la 'prima'

gsub('^.*This\\s*|\\s*first.*$', '', x) 
#[1] "is my" 
+1

Grazie @akrun. Sapevo che è qualcosa di semplice ma non sono bravo con regex. Grazie. –

8

Un altro approccio utilizzando rm_between dal pacchetto qdapRegex.

library(qdapRegex) 
rm_between(x, 'This', 'first', extract=TRUE)[[1]] 
# [1] "is my" 
Problemi correlati