Wyrażenie Java: Negatywny poprzednik

Próbuję utworzyć dwa wyrażenia regularne, które będą pasować do identyfikatorów URI. Te identyfikatory URI mają format:/foo/someVariableData i/foo/someVariableData/bar/someOtherVariableData

Potrzebuję dwóch wyrażeń regularnych. Każdy musi pasować do jednego, ale nie do drugiego.

Wyrażenia regularne, które wymyśliłem, to:/foo/.+ i/foo/.+/bar/.+ odpowiednio.

Myślę, że drugi regex jest w porządku. Pasuje tylko do drugiego ciągu. Pierwsze wyrażenie regularne pasuje jednak do obu. Zacząłem więc grać (po raz pierwszy) z negatywnym spojrzeniem w przód. Zaprojektowałem regex/foo/.+(?!bar) i skonfiguruj następujący kod, aby go przetestować

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));
}

I, oczywiście, obaj postanawiajątrue.

Czy ktoś wie, co robię źle? Nie muszę koniecznie używać Negatywnego wyglądu, muszę tylko rozwiązać problem i myślę, że ten negatywny wygląd może być jednym ze sposobów.

Dzięki,

questionAnswers(1)

yourAnswerToTheQuestion