Este es mi cadena:
" "hello": 0, "zulu": 1,234, "Bravo": 987.456 "
Deseo para reemplazar cualquier número (entero o real con separador de mil o no) en la cadena usando expresiones regulares y obtener esta nueva cadena:
"hello": "0", "zulu": "1,234", "Bravo": "987.456" "
¿Cómo puedo solucionar este problema?
Puede capturar los números utilizando esta expresión regular,
\d+(?:[,.]\d+)*
Aquí, \d+
captura un número que tiene uno o más dígitos y (?:[,.]\d+)*
captura opcionalmente más dígitos que son o bien coma o un punto separado, y reemplazarlos con "$0"
donde $0
representa partido conjunto.
demostración de expresiones regulares
Java demostración de código,
String s = "\" \"hello\": 0, \"zulu\": 1,234, \"Bravo\": 987.456 \"";
System.out.println(s.replaceAll("\\d+(?:[,.]\\d+)*", "\"$0\""));
Huellas dactilares,
" "hello": "0", "zulu": "1,234", "Bravo": "987.456" "
Además, su resultado esperado parece faltar la comillas dobles y el espacio que tiene en el inicio de la cadena de entrada y que muy probablemente debería ser un error tipográfico.