Algorithm for finding all the combinations on a boolean array
The pattern you're trying to match is regular and can be matched by the regular expression 1(0?1)*.  A good strategy would be to convert the binary array to a string and do regular expression matches over substrings of it.

There aren't an exponential number of bit strings to check.  For a string of length $n$, you only have to check 1 string of that length.  You then check 2 strings of length $n - 1$, 3 strings of length $n - 2$ and so on.  In total there are $n(n+1)/2$ strings to check.