func (rf RuneFilter) not() RuneFilter {
	return func(r rune) bool {
		return !rf(r)
	}
}
Generate and return a new, inverse RuneFilter from the argument.
package sre2
import (
	"unicode"
)
type RuneFilter func(r rune) bool
func matchRune(to_match rune) RuneFilter {
	return func(r rune) bool {
		return r == to_match
	}
}
func matchRuneRange(from rune, to rune) RuneFilter {
	return func(r rune) bool {
		return r >= from && r <= to
	}
}
func matchUnicodeClass(class string) RuneFilter {
	found := false
	match := make([]*unicode.RangeTable, 0)
	if len(class) == 1 {
		for key, r := range unicode.Categories {
			if key[0] == class[0] {
				found = true
				match = append(match, r)
			}
		}
	} else {
		options := []map[string]*unicode.RangeTable{
			unicode.Categories, unicode.Properties, unicode.Scripts}
		for _, option := range options {
			if r, ok := option[class]; ok {
				found = true
				match = append(match, r)
			}
		}
	}
	if found {
		return func(r rune) bool {
			for _, table := range match {
				if unicode.Is(table, r) {
					return true
				}
			}
			return false
		}
	}
	return nil
}