регулярное выражение не соответствует цели - PullRequest
0 голосов
/ 10 мая 2018

Допустим, у нас есть список следующих строк: admin, sam1, sam2, max, maximus

Then in search box if I give 
     *a*m* should return admin
     *sam* should return sam1,sam2
     m* should return max,maximus
     max* should return max,maximus

и т.д.

Мой код выглядит следующим образом (пример кода, не входящий в список): -

   private static final String REGEX = ".*max*.";
   private static final String INPUT = "maximus";
   private static Pattern pattern;
   private static Matcher matcher;

   public static void main( String args[] ) {
      System.out.println("matches(): "+matcher(REGEX,INPUT));
   }

   private static boolean matcher(String filterCriteria,String parentString) 
  {
       Pattern pattern = Pattern.compile(filterCriteria);
       Matcher matcher = pattern.matcher(parentString);
       return matcher.matches();       
   }

Еще немного, с ложным выводом, но это должно быть правдой:

  1. private static final String REGEX = ".*ad*.";
     private static final String INPUT = "admin";

  2. private static final String REGEX = ".*max*.";
     private static final String INPUT = "max11";

  3. private static final String REGEX = ".*sa*.";
     private static final String INPUT = "sam1";  

1 Ответ

0 голосов
/ 10 мая 2018

Это говорит о том, что ваше регулярное выражение неверно, как уже упоминалось в комментарии staszko032

.*ad*.

Это регулярное выражение означает:

  • .* ноль или более символов
  • буквальный a
  • d* ноль или более d символ
  • . любой символ

Вместо этого должно быть:

.*ad.*

Что означает:

  • .* ноль или более символов
  • буквальный ad
  • .* ноль или более символов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...