Regexp
The Regexp registry includes functions for pattern matching and string manipulation using regular expressions, providing powerful text processing capabilities.
regexFind
The function returns the first match found in the string that corresponds to the specified regular expression pattern.
Signature
RegexFind(regex string, s string) (string, error)
{{ "hello world" | regexFind "hello" }} // Output: "hello"
{{ "hello world" | regexFind "\\invalid$^///" }} // Error
regexFindAll
The function returns all matches of the regex pattern in the string, up to a specified maximum number of matches (n
).
Signature
RegexFindAll(regex string, s string, n int) ([]string, error)
{{ regexFindAll "a." "aba acada afa" 3 }} // Output: [ab a ac]
{{ regexFindAll "\\invalid$^///" "aba acada afa" 3 }} // Error
regexMatch
The function checks if the entire string matches the given regular expression pattern.
Signature
RegexMatch(regex string, s string) (bool, error)
{{ regexMatch "^[a-zA-Z]+$" "Hello" }} // Output: true
{{ regexMatch "\\invalid$^///" "Hello" }} // Error
regexSplit
The function splits the string into substrings based on matches of the regex pattern, performing the split up to n
times.
Signature
RegexSplit(regex string, s string, n int) ([]string, error)
{{ regexSplit "\\s+" "hello world from Go" 2 }}
// Output(humain readable): [hello "world from Go"]
{{ regexSplit "\\invalid$^///" "hello world from Go" 2 }} // Error
regexReplaceAll
The function replaces all occurrences of the regex pattern in the string with the specified replacement string.
Signature
RegexReplaceAll(regex string, s string, repl string) (string, error)
{{ regexReplaceAll "\\d" "R2D2 C3PO" "X" }} // Output: "RXDX CXPO"
{{ regexReplaceAll "\\invalid$^///" "R2D2 C3PO" "X" }} // Error
regexReplaceAllLiteral
The function replaces all occurrences of the regex pattern in the string with the specified literal replacement string, without interpreting any special characters in the replacement.
Signature
RegexReplaceAllLiteral(regex string, s string, repl string) (string, error)
{{ regexReplaceAllLiteral "world" "hello world" "$1" }} // Output: "hello $1"
{{ regexReplaceAllLiteral "none" "hello world" "all" }} // Output: "hello world"
{{ regexReplaceAllLiteral "\\invalid$^///" "hello world" "all" }} // Error
regexQuoteMeta
The function returns a version of the provided string that can be used as a literal pattern in a regular expression, escaping any special characters.
Signature
RegexQuoteMeta(str string) string
{{ regexQuoteMeta ".+*?^$()[]{}|" }}
// Output: \\.\\+\\*\\?\\^\\$\\(\\)\\[\\]\\{\\}\\|
regexFindGroups
The function finds the first match of a regex pattern in a string and returns the matched groups, with error handling.
Signature
RegexFindGroups(regex string, str string) ([]string, error)
{{ "aaabbb" | regexFindGroups "(a+)(b+)" }} // Output: [aaabbb aaa bbb]
{{ "aaabbb" | regexFindGroups "\\invalid$^///" }} // Error
regexFindAllGroups
The function finds all matches of a regex pattern in a string up to a specified limit and returns the matched groups, with error handling.
Signature
RegexFindAllGroups(regex string, n int, str string) ([]string, error)
{{ "aaabbb aab aaabbb" | regexFindAllGroups "(a+)(b+)" -1 }} // Output: [[aaabbb aaa bbb] [aab aa b] [aaabbb aaa bbb]]
{{ "aaabbb aab aaabbb" | regexFindAllGroups "(a+)(b+)" 1 }} // Output: [[aaabbb aaa bbb]]
{{ "aaabbb" | regexFindAllGroups "\\invalid$^///" }} // Error
regexFindNamed
The function finds the first match of a regex pattern with named capturing groups in a string and returns a map of group names to matched strings, with error handling.
Signature
RegexFindNamed(regex string, str string) (map[string]string, error)
{{ "aaabbb" | regexFindNamed "(?P<first>a+)(?P<second>b+)" }} // Output: map[first:aaa second:bbb]
{{ "aaabbb" | regexFindNamed "(?P<first>a+)(b+)" }} // Output: map[first:aaa]
{{ "bbb" | regexFindNamed "(?P<first>a+)" }} // Output: map[]
{{ "aaabbb" | regexFindNamed "\\invalid$^///" }} // Error
regexFindAllNamed
The function finds all matches of a regex pattern with named capturing groups in a string up to a specified limit and returns a slice of maps of group names to matched strings, with error handling.
Signature
RegexFindAllNamed(regex string, n int, str string) ([]map[string]string, error)
{{ "var1=value1&var2=value2" | regexFindAllNamed "(?P<param>\\w+)=(?P<value>\\w+)" -1 }} // Output: [map[param:var1 value:value1] map[param:var2 value:value2]]
{{ "var1=value1&var2=value2" | regexFindAllNamed "(?P<param>\\w+)=(?P<value>\\w+)" 1 }} // Output: [map[param:var1 value:value1]]
{{ "var1+value1" | regexFindAllNamed "(?P<param>\\w+)=(?P<value>\\w+)" -1 }} // Output: []
{{ "var1=value1" | regexFindAllNamed "\\invalid$^///" -1 }} // Error
Last updated