понятия не имею что не так с кодом, вроде все работает как надо. изменил код на
if(string.matches(".*\\b"+s+"\\b.*")&&!list.contains(s)&&!str[i].matches(" *")){
               if(str[i].equals(s)){
                   if(string.matches(".*\\b"+s+"\\b.*\\b"+s+"\\b.*")){
                       result.add(new Pair(str[i].trim(),s.trim()));
                       list.add(str[i]);
                       list.add(s);
                   }
                   else
                       list.add(s);

               }else{
                   result.add(new Pair(str[i].trim(),s.trim()));
                   list.add(str[i]);
                   list.add(s);
               }
все так же не пропускает