Я некоторое время искал, как использовать логическую операцию И в регулярных выражениях в Java, и не удалось.
Я попытался сделать то, что рекомендовано в аналогичной теме:
(?=match this expression)(?=match this too)(?=oh, and this)
, и это не работает. Даже простые примеры с? = Возвращает false:
String b = "aaadcd";
System.out.println(b.matches("(?=aa.*)"));
Также я читал, что (выражение X) (выражение Y)
должно работать как X AND Y
, но работает как X ИЛИ Y
.
Что я делаю не так?
Добавлено:
Пытался добавить в конец . *
. По-прежнему не работает.
Например:
[2-9]? [0-9] {5,9} || 1 [2-9] [0-9] {1,2} || 120 [0-9] {1 , 1} || 119 [0-9]
= X - вернуть false, если число меньше 1190
[0-9] {1,3} || 1 [0-0] [0-9] {1,2} || 11 [0-8] [0-9] {1, 1} || 119 [0-2]
= Y - вернуть false, если число больше 1992.
String a = "1189";
a.matches(X) // return false
a.mathes(Y) // return true
a.matches((?=X)(?=Y).*) // return true, but should return false.
Добавлено: Да, мое регулярное выражение неверно. Виноват. Проблема решена. Спасибо всем!