JSFiddle - React, Tailwind, and code Playground

by msm595

JavaScript

var str = "ei1274085446e***4:infod6:lengthi339738624e4:name37:archlinux-2010.05-netinstall-dual.iso12:piece lengthi524288e6:pieces1:se**dsdsdsd";

var start = 0,end = 0, depth = 0;
start = str.indexOf('4:info') + 7;//6;
end = start ;//+ 1;
depth = 1;

var keypat = /^(\d+):/,
    numpat = /^i\d+e/,
    endpat = /^e/;

while(end<str.length) {
    var sub = str.substring(end);
    
    var match = keypat.exec(sub);
    if(match != null) {
        end += match[0].length + (1*match[1]);
        console.log(match);
        continue;
    }
    
    match = numpat.exec(sub);
    if(match != null) {
        end += match[0].length;
        console.log(match);
        continue;
    }
    
    match = endpat.exec(sub);
    if(match != null) {
        console.log("Found end at " + end);
        break;
    }
    
    end++;
}

console.log(str.substring(start,end));