src/share/classes/java/util/regex/Pattern.java

Print this page

        

*** 2495,2527 **** case ']': firstInClass = false; if (prev != null) { if (consume) next(); return prev; } break; default: firstInClass = false; break; } node = range(bits); - if (include) { if (prev == null) { prev = node; } else { if (prev != node) prev = union(prev, node); } - } else { - if (prev == null) { - prev = node.complement(); - } else { - if (prev != node) - prev = setDifference(prev, node); - } - } ch = peek(); } } private CharProperty bitsOrSingle(BitClass bits, int ch) { --- 2495,2521 ---- case ']': firstInClass = false; if (prev != null) { if (consume) next(); + if (include) return prev; + else + return prev.complement(); } break; default: firstInClass = false; break; } node = range(bits); if (prev == null) { prev = node; } else { if (prev != node) prev = union(prev, node); } ch = peek(); } } private CharProperty bitsOrSingle(BitClass bits, int ch) {
*** 5160,5179 **** boolean isSatisfiedBy(int ch) { return lhs.isSatisfiedBy(ch) && rhs.isSatisfiedBy(ch);}}; } /** - * Returns the set difference of two CharProperty nodes. - */ - private static CharProperty setDifference(final CharProperty lhs, - final CharProperty rhs) { - return new CharProperty() { - boolean isSatisfiedBy(int ch) { - return ! rhs.isSatisfiedBy(ch) && lhs.isSatisfiedBy(ch);}}; - } - - /** * Handles word boundaries. Includes a field to allow this one class to * deal with the different types of word boundaries we can match. The word * characters include underscores, letters, and digits. Non spacing marks * can are also part of a word if they have a base character, otherwise * they are ignored for purposes of finding word boundaries. --- 5154,5163 ----