Я пытаюсь создать два регулярных выражения, которые будут соответствовать URI. Эти URI имеют формат: /foo/someVariableData
и /foo/someVariableData/bar/someOtherVariableData
Мне нужны два регулярных выражения. Каждый должен соответствовать одному, но не другому.
Сначала я придумал следующие регулярные выражения:
/foo/.+
и /foo/.+/bar/.+
соответственно.
Я думаю, второе регулярное выражение подходит. Он будет соответствовать только второй строке. Однако первое регулярное выражение соответствует обоим. Итак, я начал играть (впервые) с негативным просмотром вперед. Я разработал регулярное выражение /foo/.+(?!bar)
и настроил следующий код для его проверки
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));
}
И, конечно же, оба они разрешаются в true
.
Кто-нибудь знает, что я делаю не так? Мне не обязательно использовать отрицательный просмотр вперед, мне просто нужно решить проблему, и я думаю, что отрицательный просмотр вперед может быть одним из способов сделать это.
Спасибо,