code: private static ArrayList<DateMatch> matchDatesWithSeparator(Configuration configuration, String password)
      {
  
          // Initialize the list of matching dates
          ArrayList<DateMatch> dateMatches = new ArrayList<>();
  
          // Create all possible subsequences of the password
          for (int start = 0; start < password.length(); start++)
          {
              for (int end = start + 6; end <= password.length(); end++)
              {
  
                  // Get the subsequence
                  String passwordChunk = password.substring(start, end);
  
                  // Extract the date (if there is one) with the year as prefix
                  Matcher m1 = DATE_WITH_SEPARATOR_YEAR_SUFFIX.matcher(passwordChunk);
                  if (m1.matches())
                  {
                      ValidDateSplit split = isDateValid(m1.group(1), m1.group(3), m1.group(4));
                      if (split != null)
                      {
                          dateMatches.add(new DateMatch(passwordChunk, configuration, split.date, split.month, split.year, m1.group(2), start, end - 1));
                      }
                  }
  
                  // Extract the date (if there is one) with the year as suffix
                  Matcher m2 = DATE_WITH_SEPARATOR_YEAR_PREFIX.matcher(passwordChunk);
                  if (m2.matches())
                  {
                      ValidDateSplit split = isDateValid(m2.group(4), m2.group(3), m2.group(1));
                      if (split != null)
                      {
                          dateMatches.add(new DateMatch(passwordChunk, configuration, split.date, split.month, split.year, m2.group(2), start, end - 1));
                      }
                  }
  
              }
          }
  
          return dateMatches;
  
      }
docs: Extract all the possible dates with a separator
  ("-", "/", " ", "\", "_" or ".") from a password
  
  @param password the password that is analyzed
  @return the list of all the date with separator found