def is_valid_pred_string(predstr):
    """
    Return `True` if *predstr* is a valid predicate string.

    Examples:
        >>> is_valid_pred_string('"_dog_n_1_rel"')
        True
        >>> is_valid_pred_string('_dog_n_1')
        True
        >>> is_valid_pred_string('_dog_noun_1')
        False
        >>> is_valid_pred_string('dog_noun_1')
        True
    """
    predstr = predstr.strip('"').lstrip("'")
    # this is a stricter regex than in Pred, but doesn't check POS
    return re.match(
        r'_([^ _\\]|\\.)+_[a-z](_([^ _\\]|\\.)+)?(_rel)?$'
        r'|[^_]([^ \\]|\\.)+(_rel)?$',
        predstr
    ) is not None