[Turn on line numbering]arg str, left, right; var pattern, parsed, matched, match_num, match_result; // parse str looking for anything surrounded by left and right // ;$string.explode_delimited("foo<bar>baz", "<", ">") // => [["foo", 1, "baz"], ["bar"]] pattern = "*" + left + "*" + right + "*"; parsed = []; matched = []; match_num = 0; anticipate_assignment(); while (str) { match_result = match_pattern(str, pattern); if (match_result) { match_num++; parsed += [match_result[1], match_num]; matched += [match_result[2]]; str = match_result[3]; } else { parsed += [str]; str = ""; } } return [parsed, matched];
// Created 27-Mar-1995 as a part of ColdCore, see: @help Credit