x <- "what I want to get is THAT THIS is always following"
如何提取始终位于R中字符串'THIS'之前的字符串?这实际上是一个从0到inf的数字,带有不同的小数分隔符,逗号或点。
答案 0 :(得分:4)
OP你的这个并且令人困惑,考虑改写OP,这个你在寻找什么?
x <- "what I want to get is THAT THIS is always following"
sub('.* ([^ ]+) THIS .*', '\\1', x)
# [1] "THAT"
答案 1 :(得分:3)
\\S*(?= THIS)
由于R在perl
模式下支持positive and negative lookaheads using this syntax,只需在您的函数调用中添加perl = TRUE
即可。但是,如果你不这样做,请发表评论。
首先,您必须通过\S
转义R中的\\S
。然后,你可以使用regexpr
来给你匹配的位置(开始和结束)(如果没有,则为-1),然后你可以使用regmatches
来提取该值。那就是:
regmatches(x, regexpr("\\S*(?= THIS )", x, perl=TRUE))
# [1] "THAT"
答案 2 :(得分:2)
在gsubfn包中使用strapplyc
可以使用相对简单的正则表达式:
> library(gsubfn)
> strapplyc(x, "(\\S+) THIS", simplify = TRUE)
[1] "THAT"