Ich versuche, zwei reguläre Ausdrücke, die URIs entsprechen werden. Diese URIs haben das Format: /foo/someVariableData
und /foo/someVariableData/bar/someOtherVariableData
Java Regex: Negative Lookahead
Ich brauche zwei Regexe. Jedes muss eins aber nicht das andere zusammenbringen.
Die Regexe, die ich ursprünglich entwickelt habe, sind: /foo/.+
bzw. /foo/.+/bar/.+
.
Ich denke, die zweite Regex ist in Ordnung. Es wird nur die zweite Zeichenfolge übereinstimmen. Die erste Regex entspricht jedoch beiden. Also fing ich an (zum ersten Mal) mit negativem Lookahead herumzuspielen. Ich entwarf die regex /foo/.+(?!bar)
und den folgenden Code einzurichten es
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));
}
Und natürlich zu testen, beide zu true
lösen.
Jeder weiß, was ich falsch mache? Ich muss nicht notwendigerweise negative Lookahead verwenden, ich muss nur das Problem lösen, und ich denke, dass negative Lookahead könnte eine Möglichkeit sein, es zu tun.
Danke,