Leer una cadena y extraer datos.

Buenas tardes tengo esta cadena:
{name:'SIN MARCAR',y:1},{name:'BUENA',y:2},{name:'SIN MARCAR',y:3},{name:'REGULAR',y:4},{name:'SIN MARCAR',y:5},{name:'MALA',y:6},{name:'SIN MARCAR',y:7},{name:'MALA',y:8},

lo que deseo es leer la cadena desde el final y poder extraer los tres últimos valores después de la coma es decir, tener estos valores: {name:'MALA',y:6},{name:'SIN MARCAR',y:7},{name:'MALA',y:8}, gracias.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Una forma muy fácil es usar

Una forma muy fácil es usar el método split que te regresa un arreglo http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-jav... y pasarle como delimitador el "},{" . Solo tienes que regresarle las llaves ({})porque el método split se lo quita.

String [] parts  = input.split("\\}\\,\\{");
// Hay que regresarle los { } al imprimirlo pues el método split se los quita.
System.out.printf("{%s},", parts[parts.length-3]);
System.out.printf("{%s},", parts[parts.length-2]);
System.out.printf("{%s",  parts[parts.length-1]);

La otra es tratar la entrada como JSON y utilizar una biblioteca para su manejo, aunque dependiendo de lo que necesites esto puede ser demasiado complejo.

Imagen de ezamudio

JSON

parece JSON, por qué no usas un parser de JSON (FastJson por ejemplo) y luego simplemente obtienes los tres últimos objetos...