关于Jakarta-ORO正则替换的问题

ppt2000
07-12-14 0 287

String rc(String source, String id, String content) {
StringBuffer sb = new StringBuffer();
content = content.replaceAll("\\/", "\\\\/");
String kkk = "s/(<\\w+\\s+.*?id=\"" + id
+ "\".*?>).*?(<\\/\\w+>)/$1" + content + "$2/gsi";
Perl5Util putil = new Perl5Util();
putil.substitute(sb, kkk, source);
return sb.toString();
}

功能就是设置指定id的html标签的innerHTML。
若使用rc("aaa", "userage", "8");调用。
则正则为s/(<\w+\s+.*?id="".*?>).*?(<\/\w+>)/$18$2/gsi
用于替换的数字8,与$1组成了$18,导致错误。如何解决?