Reputation: 29250
How can I use the negation within square brackets as an exception, to find e. g. everything between a-z except for the the range from m-o? [a-z^m-o]
?
By the way: it's not for the sake of this example that I ask, but to be able to exclude ranges within ranges, or even single letters within ranges. I am pretty much aware that in this example it can be calculated.
I use the Zend engine (PHP).
Upvotes: 12
Views: 15128
Reputation: 41247
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]]
Upvotes: 19
Reputation: 523214
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.
Upvotes: 29