Я некоторое время искал, как использовать логические операции И в регулярных выражениях в Java, и не смог.
Я пытался сделать так, как рекомендовано в аналогичной теме:
(?=match this expression)(?=match this too)(?=oh, and this)
и это не работает. Даже простые примеры с? = Возвращает false:
String b = "aaadcd";
System.out.println(b.matches("(?=aa.*)"));
Также я читал, что (expression X)(expression Y)
должно работать как X AND Y
, но работает как X OR 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.
Добавлено:
Да, мое регулярное выражение не правильно. Виноват. Проблема решена. Спасибо всем большое!