`^$()%.[]*+-?`)
represents the character `x` itself.
- `.` (a dot) represents all characters.
- `%a` represents all letters.
- `%c` represents all control characters.
- `%d` represents all digits.
- `%l` represents all lowercase letters.
- `%p` represents all punctuation characters.
- `%s` represents all space characters.
- `%u` represents all uppercase letters.
- `%w` represents all alphanumeric characters.
- `%x` represents all hexadecimal digits.
- `%z` represents the character with representation `0`.
- `%x` (where `x` is any non-alphanumeric character) represents the
character `x`. This is the standard way to escape the magic
characters. Any punctuation character (even the non-magic) can be
preceded by a `%` when used to represent itself in a pattern.
- `[set]` represents the class which is the union of all characters in
`set`. A range of characters may be specified by separating the end
characters of the range with a `-`. All classes `%x` described
above may also be used as components in `set`. All other characters
in `set` represent themselves. For example, `[%w_]` (or `[_%w]`)
represents all alphanumeric characters plus the underscore, `[0-7]`
represents the octal digits, and `[0-7%l%-]` represents the octal
digits plus the lowercase letters plus the `-` character.
The interaction between ranges and classes is not defined. Therefore,
patterns like `[%a-z]` or `[a-%%]` have no meaning.
- `[^set]` represents the complement of `set`, where `set` is interpreted
as above.
For all classes represented by single letters (`%a`, `%c`, etc.), the
corresponding uppercase letter represents the complement of the class. For
instance, `%S` represents all non-space characters.
The definitions of letter, space, and other character groups depend on the
current locale. In particular, the class `[a-z]` may not be equivalent to `%l`.
PATTERN ITEM *lua-patternitem*
A pattern item may be
- a single character class, which matches any single character in the
class;
- a single character class followed by `*`, which matches 0 or more
repetitions of characters in the class. These repetition items will
always match the longest possible sequence;
- a single character class followed by `+`, which matches 1 or more
repetitions of characters in the class. These repetition items will
always match the longest possible sequence;
*lua-nongreedy*
- a single character class followed by `-`, which also matches 0 or
more repetitions of characters in the class. Unlike `*`, these
repetition items will always match the shortest possible sequence;
- a single character class followed by `?`, which matches 0 or 1
occurrences of a character in the class;
- `%n`, for `n` between 1 and 9; such item matches a substring equal to the
`n` -th captured string (see below);
- `%bxy`, where `x` and `y` are two distinct characters; such item matches
strings that start with `x`, end with `y`, and where the `x` and `y`
are balanced. This means that, if one reads the string from left to
right, counting `+1` for an `x` and `-1` for a `y`, the ending `y` is the first
`y` where the count reaches 0. For instance, the item `%b()` matches
expressions with balanced parentheses.
PATTERN
A pattern is a sequence of pattern items. A `^` at the beginning of a pattern
anchors the match at the beginning of the subject string. A `$` at the end of
a pattern anchors the match at the end of the subject string. At other
positions, `^` and `$` have no special meaning and represent themselves.
CAPTURES *lua-capture*
A pattern may