Hola:
"$0" en java es "$0" y NO se reeemplaza el $0 por el primer resultado de la búsqueda. Para obtener ese trozo de cadena, debes hacer esto
Pattern patron = Pattern.compile("(88)");
Matcher m = patron.matcher("asdf aaf 88 afe");
m.find();
String subcadena = m.group(1); // en subcadena tienes ahora "88"
En "
extraer partes de una cadena" tienes más detalles.
Se bueno.