Longest works for both ordinary expression patterns and string patterns.
If several Longest objects occur in the same expression, those that appear first are given higher priority to match longest sequences.
Longest is given priority pri to be the longest sequence. Matches for longest sequences are tried first for Longest objects with higher priorities.
Priorities can be any expression, and are ordered in standard MathematicaSort order. Longest[p] specifies the highest possible priority.
Longest objects with equal priorities are tried in the order they appear in the expression.
If no explicit Longest or Shortest is given, ordinary expression patterns are normally effectively assumed to be Shortest[p], while string patterns are assumed to be Longest[p].
For ordinary expressions, Longest[p] specifies that not just p itself, but also all parts of p should match the longest sequences.