How to get the text between two words in R?

Another approach using rm_between from the qdapRegex package.

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

You need .* at the end to match zero or more characters after the 'first'

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

Since this question is used as a reference, I'll add some possible solutions to build a complete overview. Both are based on a look-ahead/look-behind regex pattern.

base R

regmatches( x, gregexpr("(?<=This ).*(?= first)", x, perl = TRUE ) )

stringr

stringr::str_extract_all( x, "(?<=This ).+(?= first)" )

Tags:

String

R