diff --git a/src/java.base/share/classes/java/util/regex/Pattern.java b/src/java.base/share/classes/java/util/regex/Pattern.java index 4677fc002ae..8f30cd25bf9 100644 --- a/src/java.base/share/classes/java/util/regex/Pattern.java +++ b/src/java.base/share/classes/java/util/regex/Pattern.java @@ -4340,14 +4340,22 @@ loop: for(int x=0, offset=0; x to) { + // the region cut off the high half of a surrogate pair + matcher.hitEnd = true; + ch = seq.charAt(i); + len = 1; + } if (!predicate.is(ch)) - break; - i += Character.charCount(ch); + break; + i += len; n++; } if (i >= to) { @@ -4358,9 +4366,10 @@ loop: for(int x=0, offset=0; x