def _get_fuzzy_tc_matches(text, full_text, options):
    '''
    Get the options that match the full text, then from each option
    return only the individual words which have not yet been matched
    which also match the text being tab-completed.
    '''
    print("text: {}, full: {}, options: {}".format(text, full_text, options))
    # get the options which match the full text
    matching_options = _get_fuzzy_matches(full_text, options)
    # need to only return the individual words which:
    # - match the 'text'
    # - are not exclusively matched by other input in full_text
    # - when matched, still allows all other input in full_text to be matched
    # get the input tokens
    input_tokens = full_text.split()
    # remove one instance of the text to be matched
    initial_tokens = input_tokens.remove(text)
    # track the final matches:
    final_matches = []
    # find matches per option
    for option in options:
        option_tokens = option.split()
        # get tokens which match the text
        matches = [t for t in option_tokens if text in t]
        # get input tokens which match one of the matches
        input_tokens_which_match = [t for t in input_tokens for m in matches if t in m]
        # if any input token ONLY matches a match, remove that match
        for token in input_tokens_which_match:
            token_matches = [t for t in option_tokens if token in t]
            if len(token_matches) == 1:
                match = token_matches[0]
                if match in matches:
                    matches.remove(match)
        # for the remaining matches, if the input tokens can be fuzzily matched without
        # the match, it's ok to return it.
        for match in matches:
            # copy option tokens
            option_tokens_minus_match = option_tokens[:]
            # remove the match
            option_tokens_minus_match.remove(match)
            option_minus_match = ' '.join(option_tokens_minus_match)
            if _get_fuzzy_matches(' '.join(input_tokens), [option_minus_match]):
                if match not in final_matches:
                    final_matches.append(match)
    return final_matches
Get the options that match the full text, then from each option
    return only the individual words which have not yet been matched
    which also match the text being tab-completed.