appendReplacement doesn't throw an exception for invalid replacement groups, which is inconsistent with java.util.regex. Is this deliberate, or should the behaviour match java.util.regex?
String pattern = "(.*)";
String input = "hello";
{
System.err.println("> re2j");
var p = com.google.re2j.Pattern.compile(pattern);
var m = p.matcher(input);
StringBuilder sb = new StringBuilder();
while (m.find()) {
m.appendReplacement(sb, "$foo");
}
System.err.println(sb);
}
{
System.err.println("> java.util.regex");
var p = java.util.regex.Pattern.compile(pattern);
var m = p.matcher(input);
StringBuilder sb = new StringBuilder();
while (m.find()) {
m.appendReplacement(sb, "$foo");
}
System.err.println(sb);
}
> re2j
$foo$foo
> java.util.regex
java.lang.IllegalArgumentException: Illegal group reference
at java.base/java.util.regex.Matcher.appendExpandedReplacement(Matcher.java:1111)
at java.base/java.util.regex.Matcher.appendReplacement(Matcher.java:1041)
appendReplacementdoesn't throw an exception for invalid replacement groups, which is inconsistent withjava.util.regex. Is this deliberate, or should the behaviour matchjava.util.regex?