code: def _create_filter(self, condition):
          
          # "Normal" comparison operators?
          comparison = re.match(r"^(%s)(<[>=]?|>=?|!=|~)(.*)$" % self.ident_re, condition)
          if comparison:
              name, comparison, values = comparison.groups()
              if values and values[0] in "+-":
                  raise FilterError("Comparison operator cannot be followed by '%s' in '%s'" % (values[0], condition))
              values = self.COMPARISON_OPS[comparison] % values
          else:
              # Split name from value(s)
              try:
                  name, values = condition.split('=', 1)
              except ValueError:
                  if self.default_field:
                      name, values = self.default_field, condition
                  else:
                      raise FilterError("Field name missing in '%s' (expected '=')" % condition)
  
          # Try to find field definition
          field = self.lookup(name)
          if not field:
              raise FilterError("Unknown field %r in %r" % (name, condition))
          if field.get("matcher") is None:
              raise FilterError("Field %r cannot be used as a filter" % (name,))
  
          # Make filters from values (split on commas outside of /…/)
          filters = []
          split_values = re.findall(r'(!?/[^/]*/|[^,]+)(?:,|$)', values) if values else ['']
          if not split_values:
              raise FilterError("Internal Error: Cannot split %r into match values" % (values,))
  
          for value in split_values:
              wrapper = None
              if value.startswith('!'):
                  wrapper = NegateFilter
                  value = value[1:]
              field_matcher = field["matcher"](name, value)
              filters.append(wrapper(field_matcher) if wrapper else field_matcher)
  
          # Return filters
          return CompoundFilterAny(filters) if len(filters) > 1 else filters[0]
docs: Create a filter object from a textual condition.