Regular expression: find range except for one letter or a range
In addition to what Kenny mentions:
The JDK (at least) supports this syntax:
[a-z&&[^m-o]]
A couple of engines (including the .NET framework) support this:
[a-z-[m-o]]
You should be able calculate the difference yourself.
[a-lp-z]
If the regex engine supports lookahead assertion, you could use
(?![m-o])[a-z]
but this would probably be less efficient.