x <- "what I want to get is THAT THIS is always following"
如何提取始终在R中的字符串'THIS'之前的字符串?这实际上是一个从 0 到 inf 的数字,带有不同的小数分隔符、逗号或点。
OP 你的 THIS 和 THAT 令人困惑,考虑改写 OP,这是你要找的吗?
x <- "what I want to get is THAT THIS is always following"
sub('.* ([^ ]+) THIS .*', '\\1', x)
# [1] "THAT"
\\S*(?= THIS)
由于 R 确实支持在模式下使用此语法的正负前瞻perl
,只需添加perl = TRUE
到您的函数调用中,您就应该是黄金。但是,如果您不是,请发表评论。
首先,您必须\S
通过\\S
. 然后,您可以使用regexpr
which 为您提供匹配的位置(开始和结束)(如果有,则为 -1),然后您可以使用它regmatches
来提取该值。那是:
regmatches(x, regexpr("\\S*(?= THIS )", x, perl=TRUE))
# [1] "THAT"
strapplyc
在gsubfn包中使用可以使用一个相对简单的正则表达式:
> library(gsubfn)
> strapplyc(x, "(\\S+) THIS", simplify = TRUE)
[1] "THAT"