# Appendix D. Patterns Format

When matching a string (a sequence of characters containing an extension or a virtual path) with a pattern, the following rules apply:

- `*` matches any sequence of characters with any length (zero or more),

- `?` matches any character,

- `[`set`]` matches any character in the specified set,

- `[!`set`]` or `[^`set`]` matches any character not in the specified set,

- `\` suppresses the syntactic significance of a special character.

A set is made of characters or ranges. A range is formed by two characters with a `-` in the middle (as in `0-9` or `a-z`).

Preceding a special character with `\` makes it loose its syntactic significance and match that character exactly. The special characters are `[]*?!^-\`.

Example D-1. Examples of Patterns

- `*`: any string including the empty string matches with this pattern.

- `*.*`: `list.txt` and `holiday.jpeg` match while `my-directory` doesn't.

- `/*.php`: `/hello.php` and `/mysite/scripts/test.php` match but `/mysite/test2.pl` doesn't.

- `/*/*.php`: `/mysite/test.php` and `/mysite/scripts/test.php` match with this pattern while `/test.php` doesn't.

- `mp?`: Any 3 character long string that begins with `mp` matches.

- `?????`: Any 5 character long string matches.

- `mp[2-4]`: Only `mp2`, `mp3`, and `mp4` match.

- `mp[!2-4]`: All 3 character long strings that begin with `mp` match except `mp2`, `mp3`, and `mp4`.

- `mp[2-4g]`: Only `mp2`, `mp3`, `mp4`, and `mpg` match.

- `mp[2\-4]file`: Only `mp2file`, `mp-file`, and `mp4file` match.