String中不能使用带‘$’字符作为替换字符。
String str = "源字aa符串"; str = str.replaceAll("aa", "需要替换的字符串$");
/*
Exception in thread "main" java.lang.IllegalArgumentException: Illegal group reference
$需要替换的字符串 需要替换$的字符串
*/
/*
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range:
需要替换的字符串$
*/
java.util.regex.Matcher中
public Matcher appendReplacement(StringBuffer sb, String replacement)
else if (nextChar == '$') {
// Skip past $
cursor++;
// The first number is always a group
int refNum = (int)replacement.charAt(cursor) - '0';
if ((refNum < 0)||(refNum > 9))
throw new IllegalArgumentException(
"Illegal group reference");
cursor++;
// Capture the largest legal group string
boolean done = false;
while (!done) {
if (cursor >= replacement.length()) {
break;
}
int nextDigit = replacement.charAt(cursor) - '0';