There is a tutorial about pattern matching :
http://reference.wolfram.com/language/tutorial/Patterns.html
As for your question, I think you may need to specify an order relation operator, so you want to generate all permutations of Range[n]. It will be easier than using the symbols a, b, c, ...
For simple cases you don't have to, though. For instance if you want all permutations that keep "b" and "c" close together and in that order, you can write :
Cases[Permutations[{a,b,c,d,e}], {___, b, c, ___}]