Which regular expression engine does Java uses?
In a tool like RegexBuddy if I use
[a-z&&[^bc]]
that expression in Java is good but in RegexBuddy it has not been understood.
In fact it reports:
Match a single character present in
the list below[a-z&&[^bc]
- A character in the range between
aandz:a-z- One of the characters
&[^bc:&&[^bc- Match the character
]literally :]
but i want to match a character between a and z intersected with a character that is not b or c
Like most regex flavors,
java.util.regex.Patternhas its own specific features with syntax that may not be fully compatible with others; this includes character class union, intersection and subtraction:The most important “caveat” of Java regex is that
matchesattempts to match a pattern against the whole string. This is atypical of most engines, and can be a source of confusion at times.See also
On character class subtraction
Subtraction allows you to define for example “all consonants” in Java as
[a-z&&[^aeiou]].This syntax is specific to Java. In XML Schema, .NET, JGSoft and RegexBuddy, it’s
[a-z-[aeiou]]. Other flavors may not support this feature at all.References
Related questions