Sto tentando di creare due espressioni regolari che corrisponderanno agli URI. Questi URI hanno il formato: /foo/someVariableData
e /foo/someVariableData/bar/someOtherVariableData
Espressione regolare Java: lookahead negativo
Ho bisogno di due regex. Ognuno deve corrispondere uno ma non l'altro.
Le espressioni regolari che in origine si avvicinò con sono: /foo/.+
e /foo/.+/bar/.+
rispettivamente.
Penso che la seconda regex sia valida. Corrisponde solo alla seconda stringa. La prima espressione regolare, tuttavia, corrisponde a entrambi. Così, ho iniziato a giocare (per la prima volta) con un lookahead negativo. Ho progettato la regex /foo/.+(?!bar)
e impostare il seguente codice di provarlo
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));
}
E, naturalmente, entrambi a risolvere true
.
Qualcuno sa cosa sto facendo male? Non ho bisogno di usare necessariamente il lookahead negativo, ho solo bisogno di risolvere il problema, e penso che il lookahead negativo potrebbe essere un modo per farlo.
Grazie,