For something simple like this, base R handles this just fine.
You can switch on PCRE by using perl=T
and use lookaround assertions.
x <- 'strt111stpblablastrt222stp'
regmatches(x, gregexpr('(?<=strt).*?(?=stp)', x, perl=T))[[1]]
# [1] "111" "222"
Explanation:
(?<= # look behind to see if there is:
strt # 'strt'
) # end of look-behind
.*? # any character except
(0 or more times)
(?= # look ahead to see if there is:
stp # 'stp'
) # end of look-ahead
EDIT: Updated below answers according to the new syntax.
You may also consider using the stringi package.
library(stringi)
x <- 'strt111stpblablastrt222stp'
stri_extract_all_regex(x, '(?<=strt).*?(?=stp)')[[1]]
# [1] "111" "222"
And rm_between
from the qdapRegex package.
library(qdapRegex)
x <- 'strt111stpblablastrt222stp'
rm_between(x, 'strt', 'stp', extract=TRUE)[[1]]
# [1] "111" "222"
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…