Expresiones regulares de Java: lookahead negativo

Estoy tratando de crear dos expresiones regulares que coincidan con los URI. Estos URI son del formato:/foo/someVariableData y/foo/someVariableData/bar/someOtherVariableData

Necesito dos expresiones regulares. Cada uno debe coincidir con uno pero no el otro.

Las expresiones regulares que se me ocurrieron son:/foo/.+ y/foo/.+/bar/.+ respectivamente.

Creo que el segundo regex está bien. Sólo coincidirá con la segunda cadena. El primer regex, sin embargo, coincide con ambos. Entonces, comencé a jugar (por primera vez) con lookahead negativo. Diseñé el regex/foo/.+(?!bar) y configura el siguiente código para probarlo

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 resuelventrue.

¿Alguien sabe lo que estoy haciendo mal? No necesito usar la búsqueda en sentido negativo necesariamente, solo necesito resolver el problema, y ​​creo que la búsqueda en sentido negativo podría ser una forma de hacerlo.

Gracias,

Respuestas a la pregunta(1)

Su respuesta a la pregunta