Regular expressions
lighttpd2 uses the “Perl-compatible regular expressions” implementation from GLib, see their Regular expression syntax documentation.
The config format has different ways to provide strings (you can quote with either ' or "; the character used to quote has to be escaped with \ if used inside the string).
The simple (standard) way "text" has the following escape rules:
-
"\n"is a newline,"\r"a carriage return,"\t"a tab stop -
"\\"is one\,"\""is one double quote"and"\'"a single quote' - escaping single/double quote is optional if the symbol is not used to terminate the string, i.e.
'\"'='"'and"\'"="'" -
"\xNN": NN must be hexadecimal characters, and the string is replaced with the decoded 8-bit value as a single byte - All other
\occurences are not removed from the string.
This way is the preferred one for regular expressions; only to actually match a \ you have to do additional escaping ("\\\\"; "\x5C" = "\\" is not working), and \\ is usually not doing what you wanted (matching a digit: "\\d" = "\d"). All other escape rules are compatible with what pcre is doing.
The second way is to place an e before the string like this: e"text". It has the same rules like the normal string, but does not allow unknown escape sequences (the last rule above).
To match a digit with pcre this way you’d have to write e"\\d" instead of "\d".