Reemplazar punto en entre slash es decir, '/./' con sola barra '/'

Saurav Sahu:

Para esta cadena dirPath,

String dirPath = "c:/create/a/dir/very/deep/inside/../././../../../dir/";

Quiero que la cadena de salida para parecerse a:

"c:/create/a/dir/very/deep/inside/../../../../dir/";

Solía ​​:

dirPath.replaceAll("/[.]/", "/");

pero que dio:

c:/create/a/dir/very/deep/inside/.././../../../dir/
                                   ^^^ 

a continuación, tratado con una más replaceAllcomo:

dirPath.replaceAll("/[.]/", "/").replaceAll("/[.]/", "/");

y que funcionó!

Mi pregunta es ¿por qué no podría una llamada de conseguir el mismo resultado? La forma de lograrlo en forma más sencilla?

PS Otra expresión regular que no funcionó para mí: .replaceAll("($|/)[.]/", "$1")

blhsing:

Se puede utilizar un patrón de búsqueda hacia delante para evitar el consumo de la barra que necesita el siguiente partido:

dirPath.replaceAll("/\\.(?=/)", "")

Demostración: https://regex101.com/r/qWKVU3/1 o http://tpcg.io/ijmYJF

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=187294&siteId=1
Recomendado
Clasificación