diff options
Diffstat (limited to 'libjava/classpath/java/util/regex/Matcher.java')
-rw-r--r-- | libjava/classpath/java/util/regex/Matcher.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libjava/classpath/java/util/regex/Matcher.java b/libjava/classpath/java/util/regex/Matcher.java index 98086bfdbe7..e86be25fc41 100644 --- a/libjava/classpath/java/util/regex/Matcher.java +++ b/libjava/classpath/java/util/regex/Matcher.java @@ -40,6 +40,7 @@ package java.util.regex; import gnu.regexp.RE; import gnu.regexp.REMatch; +import gnu.regexp.CharIndexed; /** * Instance of a regular expression applied to a char sequence. @@ -50,6 +51,10 @@ public final class Matcher implements MatchResult { private Pattern pattern; private CharSequence input; + // We use CharIndexed as an input object to the getMatch method in order + // that /\G/ (the end of the previous match) may work. The information + // of the previous match is stored in the CharIndexed object. + private CharIndexed inputCharIndexed; private int position; private int appendPosition; private REMatch match; @@ -58,6 +63,7 @@ public final class Matcher implements MatchResult { this.pattern = pattern; this.input = input; + this.inputCharIndexed = RE.makeCharIndexed(input, 0); } /** @@ -119,7 +125,7 @@ public final class Matcher implements MatchResult public boolean find () { boolean first = (match == null); - match = pattern.getRE().getMatch(input, position); + match = pattern.getRE().getMatch(inputCharIndexed, position); if (match != null) { int endIndex = match.getEndIndex(); @@ -150,7 +156,7 @@ public final class Matcher implements MatchResult */ public boolean find (int start) { - match = pattern.getRE().getMatch(input, start); + match = pattern.getRE().getMatch(inputCharIndexed, start); if (match != null) { position = match.getEndIndex(); @@ -212,7 +218,7 @@ public final class Matcher implements MatchResult public boolean lookingAt () { - match = pattern.getRE().getMatch(input, 0); + match = pattern.getRE().getMatch(inputCharIndexed, 0); if (match != null) { if (match.getStartIndex() == 0) @@ -237,7 +243,7 @@ public final class Matcher implements MatchResult */ public boolean matches () { - match = pattern.getRE().getMatch(input, 0, RE.REG_TRY_ENTIRE_MATCH); + match = pattern.getRE().getMatch(inputCharIndexed, 0, RE.REG_TRY_ENTIRE_MATCH); if (match != null) { if (match.getStartIndex() == 0) |