Extracts weather groups (FM, PROB etc.) and populates group list

        Args:
            TAF report string

        Raises:
            MalformedTAF: Group decoding error

def _init_groups(self, string):
        """ Extracts weather groups (FM, PROB etc.) and populates group list

        Args:
            TAF report string

        Raises:
            MalformedTAF: Group decoding error

        """

        taf_group_pattern = """
            (?:FM|(?:PROB(?:\d{1,2})\s*(?:TEMPO)?)|TEMPO|BECMG|[\S\s])[A-Z0-9\+\-/\s$]+?(?=FM|PROB|TEMPO|BECMG|$)
        """

        group_list = []

        groups = re.findall(taf_group_pattern, string, re.VERBOSE)
        if not groups:
            raise MalformedTAF("No valid groups found")

        for group in groups:
            group_list.append(group)

        return(group_list)