<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_placeholders_list(self, format_string, matches=None):
 """ Returns a list of placeholders in ``format_string``. If ``matches`` is provided then it is used to filter the result using fnmatch so the following patterns can be used: .. code-block:: none * 	 matches everything ? 	 matches any single character [seq] 	matches any character in seq [!seq] 	matches any character not in seq This is useful because we just get simple placeholder without any formatting that may be applied to them eg ``'{placeholder:.2f}'`` will give ``['{placeholder}']`` """

        if format_string not in self._format_placeholders:
            placeholders = self._formatter.get_placeholders(format_string)
            self._format_placeholders[format_string] = placeholders
        else:
            placeholders = self._format_placeholders[format_string]

        if not matches:
            return list(placeholders)
        elif isinstance(matches, basestring):
            matches = [matches]
        # filter matches
        found = set()
        for match in matches:
            for placeholder in placeholders:
                if fnmatch(placeholder, match):
                    found.add(placeholder)
        return list(found)