Extracts all day-related information from an input string.
        Ignores any information related to the specific time-of-day.

        Args:
            inp (str): Input string to be parsed.

        Returns:
            A list of datetime objects containing the extracted date from the
            input snippet, or an empty list if none found.

def extractDays(self, inp):
        """Extracts all day-related information from an input string.
        Ignores any information related to the specific time-of-day.

        Args:
            inp (str): Input string to be parsed.

        Returns:
            A list of datetime objects containing the extracted date from the
            input snippet, or an empty list if none found.
        """
        inp = self._preprocess(inp)

        def extractDayOfWeek(dayMatch):
            if dayMatch.group(5) in self.__daysOfWeek__:
                return self.__daysOfWeek__.index(dayMatch.group(5))
            elif dayMatch.group(6) in self.__daysOfWeek__:
                return self.__daysOfWeek__.index(dayMatch.group(6))

        def extractMonth(dayMatch):
            if dayMatch.group(7) in self.__months__:
                return self.__months__.index(dayMatch.group(7)) + 1
            elif dayMatch.group(7) in self.__shortMonths__:
                return self.__shortMonths__.index(dayMatch.group(7)) + 1

        def extractDay(dayMatch):
            combined = dayMatch.group(8) + dayMatch.group(9)
            if combined in self.__dateDescriptors__:
                return self.__dateDescriptors__[combined]
            elif dayMatch.group(8) in self.__dateDescriptors__:
                return self.__dateDescriptors__[dayMatch.group(8)]
            elif int(dayMatch.group(8)) in self.__dateDescriptors__.values():
                return int(dayMatch.group(8))

        def extractDaysFrom(dayMatch):
            if not dayMatch.group(1):
                return 0

            def numericalPrefix(dayMatch):
                # Grab 'three' of 'three weeks from'
                prefix = inp.split(dayMatch.group(1))[0].strip().split(' ')
                prefix.reverse()
                prefix = list(filter(lambda s: s != 'and', prefix))

                # Generate best guess number
                service = NumberService()
                num = prefix[0]
                if service.isValid(num):
                    for n in prefix[1:]:
                        inc = n + " " + num
                        if service.isValid(inc):
                            num = inc
                        else:
                            break
                    return service.parse(num)
                return 1

            factor = numericalPrefix(dayMatch)

            if dayMatch.group(2) == 'week':
                return factor * 7
            elif dayMatch.group(2) == 'day':
                return factor * 1

        def handleMatch(dayMatch):
            def safe(exp):
                """For safe evaluation of regex groups"""
                try:
                    return exp()
                except:
                    return False

            days_from = safe(lambda: extractDaysFrom(dayMatch))
            today = safe(lambda: dayMatch.group(3) in self.__todayMatches__)
            tomorrow = safe(lambda: dayMatch.group(3)
                            in self.__tomorrowMatches__)
            next_week = safe(lambda: dayMatch.group(4) == 'next')
            day_of_week = safe(lambda: extractDayOfWeek(dayMatch))
            month = safe(lambda: extractMonth(dayMatch))
            day = safe(lambda: extractDay(dayMatch))

            # Convert extracted terms to datetime object
            if not dayMatch:
                return None
            elif today:
                d = self.now
            elif tomorrow:
                d = self.now + datetime.timedelta(days=1)
            elif type(day_of_week) == int:
                current_day_of_week = self.now.weekday()
                num_days_away = (day_of_week - current_day_of_week) % 7

                if next_week:
                    num_days_away += 7

                d = self.now + \
                    datetime.timedelta(days=num_days_away)
            elif month and day:
                d = datetime.datetime(
                    self.now.year, month, day,
                    self.now.hour, self.now.minute)

            if days_from:
                d += datetime.timedelta(days=days_from)

            return d

        matches = self._dayRegex.finditer(inp)
        return [handleMatch(dayMatch) for dayMatch in matches]