Regex

(1)

Sometimes you don't have to explicitly quote special characters to make them ordinary. For instance, most characters lose any special meaning inside a list (see section List Operators ([ ... ] and [^ ... ])). In addition, if the syntax bits RE_CONTEXT_INVALID_OPS and RE_CONTEXT_INDEP_OPS aren't set, then (for historical reasons) the matcher considers special characters ordinary if they are in contexts where the operations they represent make no sense; for example, then the match-zero-or-more operator (represented by `*') matches itself in the regular expression `*foo' because there is no preceding expression on which it can operate. It is poor practice, however, to depend on this behavior; if you want a special character to be ordinary outside a list, it's better to always quote it, regardless.

(2)

Regex therefore doesn't consider the `^' to be the first character in the list. If you put a `^' character first in (what you think is) a matching list, you'll turn it into a nonmatching list.

(3)

You can't use a character class for the starting or ending point of a range, since a character class is not a single character.

(4)

Regular expressions are also referred to as "patterns," hence the name "pattern buffer."

(5)

A table that maps all uppercase letters to the corresponding lowercase ones would work just as well for this purpose.