If you are guaranteed that all the opening ">>" and closing "<<" tags are exactly balanced without nesting, then the solutions suggested in the comments will give you the shortest substring between the tags:
StringCases["ccc>>ccccccc<<cccccc>>ccccccc<<ccccc", ">>" ~~ Shortest[___] ~~ "<<"]
{">>ccccccc<<", ">>ccccccc<<"}
(I assume that you wish to obtain all the substrings between the tags including zero-length substrings. If you don't want the latter, replace ___ with __ in the string patterns and * with + in the regexes.)
But in a case of non-balanced or nested tags they will fail to give you the shortest substring between the tags:
StringCases["c>>cc>>ccccccc<<cccccc>>ccccccc<<ccccc", ">>" ~~ Shortest[___] ~~ "<<"]
{">>cc>>ccccccc<<", ">>ccccccc<<"}
In such a situation you can use one of the solutions suggested here:
StringCases["c>>cc>>ccccccc<<cccccc>>ccccccc<<ccccc",
">>" ~~ RegularExpression["(?:(?!>>).)*?"] ~~ "<<"]
{">>ccccccc<<", ">>ccccccc<<"}
If you need only substrings with length smaller than 10 characters you can use either the two-argument form of Repeated or the corresponding regex statement:
(* well-balanced tags without nesting *)
StringCases["ccc>>ccccccc<<cccccc>>ccccccc<<ccccc",
">>" ~~ Shortest[Repeated[_, {0, 9}]] ~~ "<<"]
{">>ccccccc<<", ">>ccccccc<<"}
(* non-balanced or nested tags *)
StringCases["c>>cc>>ccccccc<<cccccc>>ccccccc<<ccccc",
">>" ~~ RegularExpression["(?:(?!>>).){0,9}?"] ~~ "<<"]
{">>ccccccc<<", ">>ccccccc<<"}
Shortest.StringCases["ccc>>ccccccc<<cccccc>>ccccccc<<ccccc", ">>" ~~ Shortest[__] ~~ "<<"]– Jason B. Aug 08 '17 at 01:57StringCases["ccc>>ccccccc<<cccccc>>cccccccccccccc<<ccccc", RegularExpression[">>(.{1,9})<<"]]– J. M.'s missing motivation Aug 08 '17 at 02:49StringPattern`PatternConvert](http://reference.wolfram.com/language/tutorial/WorkingWithStringPatterns.html#337819047). – Alexey Popkov Aug 10 '17 at 01:53