'Evaluate the incoming requirement and assertion.
If the requirement type does not exist in the assertion data, then
return False. If regex is specified, then compare the values and
assertion values. Otherwise, grab the intersection of the values
and use that to compare against the evaluation type.
:param values: list of allowed values, defined in the requirement
:type values: list
:param assertion_values: The values from the assertion to evaluate
:type assertion_values: list/string
:param eval_type: determine how to evaluate requirements
:type eval_type: string
:param regex: perform evaluation with regex
:type regex: boolean
:returns: boolean, whether requirement is valid or not.'

def _evaluate_requirement(self, values, assertion_values, eval_type, regex):

    if regex:
        any_match = self._evaluate_values_by_regex(values, assertion_values)
    else:
        any_match = bool(set(values).intersection(set(assertion_values)))
    if (any_match and (eval_type == self._EvalType.ANY_ONE_OF)):
        return True
    if ((not any_match) and (eval_type == self._EvalType.NOT_ANY_OF)):
        return True
    return False
