Regexp rewrite table

The 'regexp' module implements table lookups by applying a regular expression to the key value. If it matches - 'replacement' value is returned with $N placeholders being replaced with corresponding capture groups from the match. Otherwise, no value is returned.

The regular expression syntax is the subset of PCRE. See https://golang.org/pkg/regexp/syntax/ for details.

table.regexp <regexp> [replacement] {
    full_match yes
    case_insensitive yes
    expand_placeholders yes
}

Note that [replacement] is optional. If it is not included - table.regexp will return the original string, therefore acting as a regexp match check. This can be useful in combination in destination_in for advanced matching:

destination_in regexp ".*-bounce+.*@example.com" {
    ...
}

Configuration directives

Syntax: full_match boolean
Default: yes

Whether to implicitly add start/end anchors to the regular expression. That is, if 'full_match' is yes, then the provided regular expression should match the whole string. With no - partial match is enough.

Syntax: case_insensitive boolean
Default: yes

Whether to make matching case-insensitive.

Syntax: expand_placeholders boolean
Default: yes

Replace '$name' and '${name}' in the replacement string with contents of corresponding capture groups from the match.

To insert a literal $ in the output, use $$ in the template.

Identity table (table.identity)

The module 'identity' is a table module that just returns the key looked up.

table.identity { }