regexp functions

These functions allow user you to search and modify text with regular expressions.

The syntax of the regular expressions accepted is Go’s regexp syntax, and is the same general syntax used by Perl, Python, and other languages.

regexp.Find

Returns a string holding the text of the leftmost match in input of the regular expression expression.

This function provides the same behaviour as Go’s regexp.FindString function.

Usage

regexp.Find expression input
input | regexp.Find expression

Arguments

name description
expression (required) The regular expression
input (required) The input to search

Examples

$ gomplate -i '{{ regexp.Find "[a-z]{3}" "foobar"}}'
foo
$ gomplate -i 'no {{ "will not match" | regexp.Find "[0-9]" }}numbers'
no numbers

regexp.FindAll

Returns a list of all successive matches of the regular expression.

This can be called with 2 or 3 arguments. When called with 2 arguments, the n argument (number of matches) will be set to -1, causing all matches to be returned.

This function provides the same behaviour as Go’s regexp.FindAllString function.

Usage

regexp.FindAll expression [false] input
input | regexp.FindAll expression [false]

Arguments

name description
expression (required) The regular expression
false (optional) The number of matches to return
input (required) The input to search

Examples

$ gomplate -i '{{ regexp.FindAll "[a-z]{3}" "foobar" | toJSON}}'
["foo", "bar"]
$ gomplate -i '{{ "foo bar baz qux" | regexp.FindAll "[a-z]{3}" 3 | toJSON}}'
["foo", "bar", "baz"]

regexp.Match

Returns true if a given regular expression matches a given input.

This returns a boolean which can be used in an if condition, for example.

Usage

regexp.Match expression input
input | regexp.Match expression

Arguments

name description
expression (required) The regular expression
input (required) The input to test

Examples

$ gomplate -i '{{ if (.Env.USER | regexp.Match `^h`) }}username ({{.Env.USER}}) starts with h!{{end}}'
username (hairyhenderson) starts with h!

regexp.Replace

Replaces matches of a regular expression with the replacement string.

The replacement is substituted after expanding variables beginning with $.

This function provides the same behaviour as Go’s regexp.ReplaceAllString function.

Usage

regexp.Replace expression replacement input
input | regexp.Replace expression replacement

Arguments

name description
expression (required) The regular expression string
replacement (required) The replacement string
input (required) The input string to operate on

Examples

$ gomplate -i '{{ regexp.Replace "(foo)bar" "$1" "foobar"}}'
foo
$ gomplate -i '{{ regexp.Replace "(?P<first>[a-zA-Z]+) (?P<last>[a-zA-Z]+)" "${last}, ${first}" "Alan Turing"}}'
Turing, Alan

regexp.ReplaceLiteral

Replaces matches of a regular expression with the replacement string.

The replacement is substituted directly, without expanding variables beginning with $.

This function provides the same behaviour as Go’s regexp.ReplaceAllLiteralString function.

Usage

regexp.ReplaceLiteral expression replacement input
input | regexp.ReplaceLiteral expression replacement

Arguments

name description
expression (required) The regular expression string
replacement (required) The replacement string
input (required) The input string to operate on

Examples

$ gomplate -i '{{ regexp.ReplaceLiteral "(foo)bar" "$1" "foobar"}}'
$1
$ gomplate -i '{{ `foo.bar,baz` | regexp.ReplaceLiteral `\W` `$` }}'
foo$bar$baz

regexp.Split

Splits input into sub-strings, separated by the expression.

This can be called with 2 or 3 arguments. When called with 2 arguments, the n argument (number of matches) will be set to -1, causing all sub-strings to be returned.

This is equivalent to strings.SplitN, except that regular expressions are supported.

This function provides the same behaviour as Go’s regexp.Split function.

Usage

regexp.Split expression [false] input
input | regexp.Split expression [false]

Arguments

name description
expression (required) The regular expression
false (optional) The number of matches to return
input (required) The input to search

Examples

$ gomplate -i '{{ regexp.Split `[\s,.]` "foo bar,baz.qux" | toJSON}}'
["foo","bar","baz","qux"]
$ gomplate -i '{{ "foo bar.baz,qux" | regexp.Split `[\s,.]` 3 | toJSON}}'
["foo","bar","baz"]