不管使用appendReplacement还是字符串的ReplaceAll,Replace等等这些方法的时候,如果你的replacement是拼出来的字符串,要小心里面是不是包含了正则表达式有特殊含义的字符,比如$,这个字符用来表示反向引用的组。
如果你的正则表达式中恰好有这个组,最终结果可能不是你想要的,如果这个组不存在,name就会抛出异常。
本来是要替换整句,期望的结果是$10 is cheap,实际结果变成了The0 is cheap
所以最好使用Matcher.quoteReplacement()方法来处理replacement中的字符串。
如果你的正则表达式中恰好有这个组,最终结果可能不是你想要的,如果这个组不存在,name就会抛出异常。
String source=“The price of this book is 10.”;
String replacement="$10 is cheap"
String result=source.replaceAll("(The) (price) (of) this book is 10.",replacement).
本来是要替换整句,期望的结果是$10 is cheap,实际结果变成了The0 is cheap
所以最好使用Matcher.quoteReplacement()方法来处理replacement中的字符串。