static MatchAny from(String field, TypedGetter valueGetter, List<?> values) {
      List<String> exactMatches = new ArrayList<>();
      List<String> patterns = new ArrayList<>();

      for (var value : values) {
        if (value != null) {
          String string = value.toString();
          if (string.matches("^.*(?<!\\\\)%.*$")) {
            patterns.add(wildcardToRegex(string));
          } else {
            exactMatches.add(unescape(string));
          }
        }
      }
      boolean matchWhenMissing = values.stream().anyMatch(v -> v == null || "".equals(v));

      return new MatchAny(field, values,
        Set.copyOf(exactMatches),
        patterns.isEmpty() ? null : Pattern.compile(patterns.stream().collect(Collectors.joining("|", "(", ")"))),
        matchWhenMissing,
        valueGetter
      );
    }
Evaluates to true if the value for {@code field} tag is any of {@code exactMatches} or contains any of
{@code wildcards}.

@param values           all raw string values that were initially provided
@param exactMatches     the input {@code values} that should be treated as exact matches
@param pattern          regular expression that the value must match, or null
@param matchWhenMissing if {@code values} contained ""
planetiler-core/src/main/java/com/onthegomap/planetiler/expression/Expression.java