Estoy tratando de crear dos expresiones regulares que coincidan con los URI. Estos URI tienen el formato: /foo/someVariableData
y /foo/someVariableData/bar/someOtherVariableData
Java regex: Negative lookahead
Necesito dos expresiones regulares. Cada uno tiene que coincidir con uno pero no con el otro.
Las expresiones geográficas que originalmente se me ocurrió son: /foo/.+
y /foo/.+/bar/.+
respectivamente.
Creo que la segunda expresión regular está bien. Solo coincidirá con la segunda cadena. La primera expresión regular, sin embargo, coincide con ambos. Entonces, comencé a jugar (por primera vez) con un lookaid negativo. Diseñé la expresión regular /foo/.+(?!bar)
y configurar el código siguiente para probar que
public static void main(String[] args) {
String shouldWork = "/foo/abc123doremi";
String shouldntWork = "/foo/abc123doremi/bar/def456fasola";
String regex = "/foo/.+(?!bar)";
System.out.println("ShouldWork: " + shouldWork.matches(regex));
System.out.println("ShouldntWork: " + shouldntWork.matches(regex));
}
Y, por supuesto, ambos a resolver true
.
¿Alguien sabe lo que estoy haciendo mal? No necesito usar Negative lookahead necesariamente, solo necesito resolver el problema, y creo que un lookahead negativo podría ser una forma de hacerlo.
Gracias,