pattern <- "(?=([1-]{2}))"
s <- "-1-"
res <- gregexpr(pattern, s, perl=TRUE)
starts <- attr(res[[1]],'capture.start')
lengths <- attr(res[[1]],'capture.length')
ends <- starts + lengths - 1
df_positions <- do.call(rbind, Map(data.frame, start=starts, end=ends, length=lengths))
df_positions
cGF0dGVybiA8LSAiKD89KFsxLV17Mn0pKSIKcyA8LSAiLTEtIgpyZXMgPC0gZ3JlZ2V4cHIocGF0dGVybiwgcywgcGVybD1UUlVFKQpzdGFydHMgPC0gYXR0cihyZXNbWzFdXSwnY2FwdHVyZS5zdGFydCcpIApsZW5ndGhzIDwtIGF0dHIocmVzW1sxXV0sJ2NhcHR1cmUubGVuZ3RoJykKZW5kcyA8LSBzdGFydHMgKyBsZW5ndGhzIC0gMQpkZl9wb3NpdGlvbnMgPC0gZG8uY2FsbChyYmluZCwgTWFwKGRhdGEuZnJhbWUsIHN0YXJ0PXN0YXJ0cywgZW5kPWVuZHMsIGxlbmd0aD1sZW5ndGhzKSkKZGZfcG9zaXRpb25z