2017-03-31 60 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]])