Estoy tratando de crear una expresión regular que busque el número de barras inclinadas (/) al principio de una Cadena y si hay un número impar de barras de retroceso serán reemplazadas por Cadena vacía.
String regex = "^/(//)*";
System.err.println("Case1: " + "/".replaceAll(regex,""));
System.err.println("Case2: " + "//".replaceAll(regex,""));
System.err.println("Case3: " + "///".replaceAll(regex,""));
System.err.println("Case4: " + "/b".replaceAll(regex,""));
System.err.println("Case5: " + "//b".replaceAll(regex,""));
System.err.println("Case6: " + "///b".replaceAll(regex,""));
Mi expresión regular está trabajando con el caso 1,3,4 y 6, pero en el caso 2 y 5 está imprimiendo / y / b como salida respectivamente.
Por favor ayuda.
Respuestas
3 para la respuesta № 1Añadir un lookahead negativo (?!/)
en su expresión regular para comprobar que no hay más /
después de emparejar las probabilidades. En su caso su número impar picking /
desde el //
o ///
, por lo tanto no funcionó.
String regex = "^/(//)*(?!/)";
^^^^^ here
1 para la respuesta № 2
prueba esto
String regex = "^/(//)*(?=[^/]|$)";