appendReplacement doesn't throw for invalid replacement groups
- Dominant language
- Java
- Stars
- 1.3k
- Forks
- 165
- PR merge metrics
- No merged PRs in 30d
Description
`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`?
```java
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)
```
Contributor guide
Assessment
This issue has not been assessed yet.