module strex; // search char[] string for substrings enclosed in char left and char right char[][] findNesting(char[] string, char left, char right) { char[][] result; for (int i=0; i < string.length; i++) if (string[i] == left) { char[] tmp = recSearch(string[i..$], left, right); if (tmp.length != 0) { result.length = result.length + 1; result[length - 1] = tmp; } } return result; } // search char[] substr for the corresponding char right to char substr[0]==left char[] recSearch(char[] substr, char left, char right) { int depth = 0; for (int i=0; i < substr.length; i++) { if (substr[i] == left) depth++; if (substr[i] == right) depth--; if (depth == 0) // match! return substr[1..i].dup; // substr[1..index] -> skip the left&right delimiter, // to keep the delimiters, replace by: substr[0..i+1] } return ""; // no matching char right with the corresponding nesting depth } // checks char[] string, if a pattern: left ... right // is found, where ... are arbitrary chars bool containsTag(char[] string, char left, char right) { bool foundLeft = false; bool foundRight = false; for (int i=0; i < string.length; i++) { if (string[i] == left) foundLeft = true; if (string[i] == right) if (foundLeft == true) return true; } return false; }