Regular expression support
Filebeat regular expression support is based on RE2.
Filebeat has several configuration options that accept regular expressions. For example, multiline.pattern
, include_lines
, exclude_lines
, and exclude_files
all accept regular expressions. Some options, however, such as the input paths
option, accept only glob-based paths.
Before using a regular expression in the config file, refer to the documentation to verify that the option you are setting accepts a regular expression.
We recommend that you wrap regular expressions in single quotation marks to work around YAML’s string escaping rules. For example, '^\[?[0-9][0-9]:?[0-9][0-9]|^[[:graph:]]+'
.
For more examples of supported regexp patterns, see Managing Multiline Messages. Although the examples pertain to Filebeat, the regexp patterns are applicable to other use cases.
The following patterns are supported:
Pattern |
Description |
Single Characters |
|
x |
single character |
. |
any character |
[xyz] |
character class |
[^xyz] |
negated character class |
[[:alpha:]] |
ASCII character class |
[[:^alpha:]] |
negated ASCII character class |
\d |
Perl character class |
\D |
negated Perl character class |
\pN |
Unicode character class (one-letter name) |
\p{{Greek}} |
Unicode character class |
\PN |
negated Unicode character class (one-letter name) |
\P{{Greek}} |
negated Unicode character class |
Composites |
|
xy |
x followed by y |
x|y |
x or y (prefer x ) |
Repetitions |
|
x* |
zero or more x |
x+ |
one or more x |
x? |
zero or one x |
x{n,m} |
n or n+1 or … or m x , prefer more |
x{n,} |
n or more x , prefer more |
x{{n}} |
exactly n x |
x*? |
zero or more x , prefer fewer |
x+? |
one or more x , prefer fewer |
x?? |
zero or one x , prefer zero |
x{n,m}? |
n or n+1 or … or m x , prefer fewer |
x{n,}? |
n or more x , prefer fewer |
x{{n}}? |
exactly n x |
Grouping |
|
(re) |
numbered capturing group (submatch) |
(?P<name>re) |
named & numbered capturing group (submatch) |
(?:re) |
non-capturing group |
(?i)abc |
set flags within current group, non-capturing |
(?i:re) |
set flags during re, non-capturing |
(?i)PaTTeRN |
case-insensitive (default false) |
(?m)multiline |
multi-line mode: ^ and $ match begin/end line in addition to begin/end text (default false) |
(?s)pattern. |
let . match \n (default false) |
(?U)x*abc |
ungreedy: swap meaning of x* and x*? , x+ and x+? , etc (default false) |
Empty Strings |
|
^ |
at beginning of text or line (m =true) |
$ |
at end of text (like \z not \Z ) or line (m =true) |
\A |
at beginning of text |
\b |
at ASCII word boundary (\w on one side and \W , \A , or \z on the other) |
\B |
not at ASCII word boundary |
\z |
at end of text |
Escape Sequences |
|
\a |
bell (same as \007 ) |
\f |
form feed (same as \014 ) |
\t |
horizontal tab (same as \011 ) |
\n |
newline (same as \012 ) |
\r |
carriage return (same as \015 ) |
\v |
vertical tab character (same as \013 ) |
\* |
literal * , for any punctuation character * |
\123 |
octal character code (up to three digits) |
\x7F |
two-digit hex character code |
\x{{10FFFF}} |
hex character code |
\Q...\E |
literal text ... even if ... has punctuation |
ASCII Character Classes |
|
[[:alnum:]] |
alphanumeric (same as [0-9A-Za-z] ) |
[[:alpha:]] |
alphabetic (same as [A-Za-z] ) |
[[:ascii:]] |
ASCII (same as \x00-\x7F] ) |
[[:blank:]] |
blank (same as [\t ] ) |
[[:cntrl:]] |
control (same as [\x00-\x1F\x7F] ) |
[[:digit:]] |
digits (same as [0-9] ) |
[[:graph:]] |
graphical (same as [!-~] == [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_` {|}~] ) |
[[:lower:]] |
lower case (same as [a-z] ) |
[[:print:]] |
printable (same as [ -~] == [ [:graph:]] ) |
[[:punct:]] |
punctuation (same as [!-/:-@[-`{-~] ) |
[[:space:]] |
whitespace (same as [\t\n\v\f\r ] ) |
[[:upper:]] |
upper case (same as [A-Z] ) |
[[:word:]] |
word characters (same as [0-9A-Za-z_] ) |
[[:xdigit:]] |
hex digit (same as [0-9A-Fa-f] ) |
Supported Perl Character Classes |
|
\d |
digits (same as [0-9] ) |
\D |
not digits (same as [^0-9] ) |
\s |
whitespace (same as [\t\n\f\r ] ) |
\S |
not whitespace (same as [^\t\n\f\r ] ) |
\w |
word characters (same as [0-9A-Za-z_] ) |
\W |
not word characters (same as [^0-9A-Za-z_] ) |