Regex Java: lookahead negativo
Estou tentando criar duas expressões regulares que combinem com URIs. Esses URIs são do formato:/foo/someVariableData
e/foo/someVariableData/bar/someOtherVariableData
Eu preciso de dois regexes. Cada um precisa combinar um, mas não o outro.
As regexes que eu originalmente criei são:/foo/.+
e/foo/.+/bar/.+
respectivamente.
Eu acho que o segundo regex está bem. Ele corresponderá apenas à segunda string. O primeiro regex, no entanto, corresponde a ambos. Então, comecei a brincar (pela primeira vez) com lookahead negativo. Eu projetei o regex/foo/.+(?!bar)
e configure o seguinte código para testá-lo
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, claro, ambos resolvemtrue
.
Alguém sabe o que estou fazendo errado? Eu não preciso necessariamente usar o Lookahead Negativo, eu só preciso resolver o problema, e acho que o lookahead negativo pode ser uma maneira de fazer isso.
Obrigado,