Get all subsequences of a list:
ReplaceList[{a, b, c}, {___, x__, ___} -> {x}]
You can specify the maximum number of items:
ReplaceList[{a, b, c}, {___, x__, ___} -> {x}, 3]
ReplaceList[{a, b, c}, {___, x__, ___} -> {x}, 0]
If no rule matches, an empty list is returned:
ReplaceList[a, b->x]
Like in ReplaceAll, rules can be a nested list:
ReplaceList[{a, b, c}, {{{___, x__, ___} -> {x}}, {{a, b, c} -> t}}, 2]
ReplaceList[expr, {}, -1]
Possible matches for a sum:
ReplaceList[a + b + c, x_ + y_ -> {x, y}]