import re


def match_filter(value: str, filter_string: str) -> bool:
    """Return True when the value matches the filter string."""
    escaped_characters = [".", "$", "^", "(", ")", "?"]
    for character in escaped_characters:
        filter_string = filter_string.replace(character, f"\\{character}")
    filter_string = filter_string.replace("*", ".*")
    filter_string = filter_string.replace("+", ".+")
    pattern = f"^{filter_string}$"
    match = re.match(pattern, value)
    return match is not None