-4
x <- "what I want to get is THAT THIS is always following"

如何提取始终在R中的字符串'THIS'之前的字符串?这实际上是一个从 0 到 inf 的数字,带有不同的小数分隔符、逗号或点。

4

3 回答 3

4

OP 你的 THIS 和 THAT 令人困惑,考虑改写 OP,是你要找的吗?

x <- "what I want to get is THAT THIS is always following"

sub('.* ([^ ]+) THIS .*', '\\1', x)
# [1] "THAT"
于 2013-07-11T23:11:03.297 回答
3

\\S*(?= THIS)由于 R 确实支持在模式下使用此语法的正负前瞻perl,只需添加perl = TRUE到您的函数调用中,您就应该是黄金。但是,如果您不是,请发表评论。

首先,您必须\S通过\\S. 然后,您可以使用regexprwhich 为您提供匹配的位置(开始和结束)(如果有,则为 -1),然后您可以使用它regmatches来提取该值。那是:

regmatches(x, regexpr("\\S*(?= THIS )", x, perl=TRUE))
# [1] "THAT"
于 2013-07-11T22:56:23.017 回答
2

strapplycgsubfn包中使用可以使用一个相对简单的正则表达式:

> library(gsubfn)
> strapplyc(x, "(\\S+) THIS", simplify = TRUE)
[1] "THAT"
于 2013-07-11T23:43:12.950 回答