@Override protected Map<String, Double> doInBackground(Void... params) { Map<String, Double> results = new HashMap<>(); for (Map.Entry<String, Double> entry : FoodItem.getAllDensities().entrySet()) { String[] words = food.getName().split("\\s+"); for (String word : words) { // boolean contains = entry.getKey().toLowerCase().matches(".*\\b" + word.toLowerCase() + // "\\b.*"); String cleanedWord = word.replaceAll("[^\\w]", ""); if (cleanedWord.equals("")) { continue; } boolean contains = entry.getKey().toLowerCase().matches(".*\\b" + cleanedWord.toLowerCase() + "\\b.*"); if (contains) { results.put(entry.getKey(), entry.getValue()); } } } return results; }