2016-08-04 2 views
-4

Ну, я надеюсь, что мой вопрос охватывает суть, но позвольте мне уточнить. Мне нужно создать регулярное выражение, которое принимает части разделенной запятой строки или ее комбинаций.Как создать регулярное выражение, которое принимает комбинации разделенной запятой строки в java

Для например:

Если строка:

собаки, кошки, крысы

Он должен принять комбинации, как следующее:

  1. собаки
  2. кошка
  3. крысы
  4. собаки, кошки (и наоборот)
  5. собаки, крысы (и наоборот)
  6. кошки, крысы (и наоборот)
  7. собаки, кошки, крысы (и другой порядок этого)

Благодарим за продвинутого человека, который может помочь мне с этим.

+0

Я бы предложил разделить на '\ s *, \ s *' как входные, так и выходные данные, а затем сравнить два массива, если они содержат одни и те же множества. – HamZa

+0

прочитайте это первым (http://stackoverflow.com/help/how-to-ask) – emotionlessbananas

+0

Как следует повторять повторяющиеся слова? –

ответ

1

Как было предложено @HamZa, разделение строк на регулярное выражение является хорошим подходом. Мы можем поместить допустимые токены в набор, а затем убедиться, что все остальные токены существуют в наборе.

static boolean checkCombination(String allowed, String combination) { 

    // Build set of allowed tokens 
    Set<String> allowedSet = new HashSet<>(); 
    for (String str : allowed.split("\\s*,\\s*")) 
    allowedSet.add(str); 

    // Check to see if there are any illegal tokens 
    for (String str : combination.split("\\s*,\\s*")) 
    if (!allowedSet.contains(str)) 
     return false; 

    // If nothing illegal is found, it is a valid combination 
    return true; 

} 
Смежные вопросы