2017-03-31 61 views
4

我想知道的数字是由1包围的。但是,如果有多于一个0而没有被1打断,它只能算作一个。搜索字符串中的特殊模式:R

string <- "1101000010101111001110" 

这是最接近我能做到:

length(gregexpr(pattern ="101",string)[[1]]) 

预期输出:

5 
+1

不宜模式是'10 + 1'作为您正在寻找**超过一个0 **?尝试一下,让我知道。 – Rahul

+0

@Rahul感谢当有一个以上的0现在工作。但是当模式重叠时我该怎么办? –

回答

9

随着gregexpr,您可以使用前向断言与perl=True找到重叠的匹配:

(?=...)lookahead assertion

(?=...)

零宽度阳性预测先行断言。例如,/\w+(?=\t)/匹配一个单词后跟一个选项卡,不包括$&中的选项卡。

length(gregexpr("(?=10+1)", string, perl=TRUE)[[1]])