':param task: Task instance
:param operation: one of \'accept\' \'reject\' \'accept_excluding\' and \'reject_excluding\'
accept and reject will be called on the entry if any of the regxps match
*_excluding operations will be called if any of the regexps don\'t match
:param regexps: list of {compiled_regexp: options} dictionaries
:return: Return list of entries that didn\'t match regexps'

def filter(self, task, operation, regexps):

    rest = []
    method = (Entry.accept if (u'accept' in operation) else Entry.reject)
    match_mode = (u'excluding' not in operation)
    for entry in task.entries:
        log.trace((u'testing    %i    regexps    to    %s' % (len(regexps), entry[u'title'])))
        for regexp_opts in regexps:
            (regexp, opts) = list(regexp_opts.items())[0]
            field = self.matches(entry, regexp, opts.get(u'from'), opts.get(u'not'))
            if (match_mode == bool(field)):
                matchtext = ((u"regexp    '%s'    " % regexp.pattern) + ((u"matched    field    '%s'" % field) if match_mode else u"didn't    match"))
                log.debug((u'%s    for    %s' % (matchtext, entry[u'title'])))
                if opts.get(u'path'):
                    entry[u'path'] = opts[u'path']
                if opts.get(u'set'):
                    log.debug((u'adding    set:    info    to    entry:"%s"    %s' % (entry[u'title'], opts[u'set'])))
                    set = plugin.get_plugin_by_name(u'set')
                    set.instance.modify(entry, opts[u'set'])
                method(entry, matchtext)
                break
        else:
            entry.trace((u'None    of    configured    %s    regexps    matched' % operation))
            rest.append(entry)
    return rest
