List<TextRange> (String s) { List<TextRange> ranges = new ArrayList<>(); int startOffset = s.indexOf(PREFIX); while (startOffset >= 0) { int endOffset = s.indexOf(SUFFIX, startOffset); if (endOffset > startOffset) { if (s.substring(startOffset + PREFIX.length(), endOffset).contains(PREFIX)) { startOffset = s.indexOf(PREFIX, startOffset + 1); } else { ranges.add(new TextRange(startOffset, endOffset)); startOffset = s.indexOf(PREFIX, endOffset); } } else { break; } } return ranges; }