'Returns a list of raw (tag-name, value) pairs derived from a string; method scrubs tag names and values as well.
Return value is a list of (tag_name, tag_value) tuples.'

def parse_tags(self, tag_str):

    if (not tag_str):
        return dict()
    reg_exp = re.compile((('[' + self.tag_separators) + ']'))
    raw_tags = reg_exp.split(tag_str)
    name_value_pairs = []
    for raw_tag in raw_tags:
        nv_pair = self._get_name_value_pair(raw_tag)
        scrubbed_name = self._scrub_tag_name(nv_pair[0])
        scrubbed_value = self._scrub_tag_value(nv_pair[1])
        name_value_pairs.append((scrubbed_name, scrubbed_value))
    return name_value_pairs
