tengo una cadena
String string = "-minY:50 -maxY:100 -minVein:8 -maxVein:10 -meta:0 perChunk:5;";Y de alguna manera quiero sacar el -meta:0 con expresiones regulares (reemplazar todo excepto -meta:0), hice una expresión regular que elimina -meta:0 pero no puedo hacer que elimine todo excepto -meta:0 Intenté usar alguna otra expresión regular, pero estaba ignorando toda la línea cuando tenía -meta:[0-9], y como puede ver, tengo una línea para todo. Así ha ido borrando -meta:0 del String:
String meta = string.replaceAll("( -meta:[0-9])", ""); System.out.println(meta);De alguna manera quiero revertir eso y eliminar todo excepto -meta:[0-9]
No pude encontrar nada en la página sobre mi problema porque todo ignoraba toda la línea después de encontrar la palabra, lo siento si hay algo similar a esto.
Debería capturar su coincidencia en un grupo capturado y usar su referencia en reemplazo como:
String meta = string.replaceAll("^.*(-meta:\\d+).*$", "$1"); System.out.println(meta); //=> "-meta:0"Según entiendo su requerimiento, usted quiere:
a) quieres extraer meta* de la cadena
b) reemplazar todo lo demás con ""
Podrías hacer algo como:
String string = "-minY:50 -maxY:100 -minVein:8 -maxVein:10 -meta:0 perChunk:5;"; Pattern p = Pattern.compile(".*(-meta:[0-9]).*"); Matcher m = p.matcher(string); if ( m.find() ) { string = string.replaceAll(m.group(0),m.group(1)); System.out.println("After removal of meta* : " + string); } Lo que hace este código es encontrar meta:[0-9] y lo retiene y elimina otros grupos encontrados