R Regex:在匹配的字符串前面找到字符串

时间:2013-07-11 22:49:31

标签: regex r

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

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

3 个答案:

答案 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"