====== Appendix E. Regular Expressions. ======
=== Summary of regular-expression constructs ===
^Construct^Matches^
^ Characters ^^
|X|The character x|
|\\|The backslash character|
|\0n|The character with octal value 0n (0 <= n <= 7)|
|\0nn|The character with octal value 0nn (0 <= n <= 7))|
|\0mnn|The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7)|
|\xhh|The character with hexadecimal value 0xhh|
|\uhhhh|The character with hexadecimal value 0xhhhh|
|\t|The tab character ('\u0009')|
|\n|The newline (line feed) character ('\u000A')|
|\r|The carriage-return character ('\u000D')|
|\f|The form-feed character ('\u000C')|
|\a|The alert (bell) character ('\u0007')|
|\e|The escape character ('\u001B')|
|\cx|The control character corresponding to x|
^ Character classes ^^
|[abc]|a, b, or c (simple class)|
|[abc]|Any character except a, b, or c (negation)|
|[a-zA-Z]|a through z or A through Z, inclusive (range)|
|[a-d[m-p]]|a through d, or m through p: [a-dm-p] (union)|
|[a-z&&[def]]|d, e, or f (intersection)|
|[a-z&&[^bc]]|a through z, except for b and c: [ad-z] (subtraction)|
|[a-z&&[^m-p]]|a through z, and not m through p: [a-lq-z](subtraction)|
^ Predefined character classes ^^
|.|Any character (may or may not match [[http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/#lt|line terminators]])|
|\d|A digit: [0-9]|
|\D|A non-digit: [^0-9]|
|\s|A whitespace character: [ \t\n\x0B\f\r]|
|\S|A non-whitespace character: [^\s]|
|\w|A word character: [a-zA-Z_0-9]|
|\W|A non-word character: [^\w]|
^ POSIX character classes (US-ASCII only) ^^
|\p{Lower}|A lower-case alphabetic character: [a-z]|
|\p{Upper}|An upper-case alphabetic character:[A-Z]|
|\p{ASCII}|All ASCII:[\x00-\x7F]|
|\p{Alpha}|An alphabetic character:[\p{Lower}\p{Upper}]|
|\p{Digit}|A decimal digit: [0-9]|
|\p{Alnum}|An alphanumeric character:[\p{Alpha}\p{Digit}]|
|\p{Punct}|Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ |
|\p{Graph}|A visible character: [\p{Alnum}\p{Punct}]|
|\p{Print}|A printable character: [\p{Graph}]|
|\p{Blank}|A space or a tab: [ \t]|
|\p{Cntrl}|A control character: [\x00-\x1F\x7F]|
|\p{XDigit}|A hexadecimal digit: [0-9a-fA-F]|
|\p{Space}|A whitespace character: [ \t\n\x0B\f\r]|
^ Classes for Unicode blocks and categories ^^
| \p{InGreek}|A character in the Greek block (simple [[http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/#ubc|block]])|
| \p{Lu}|An uppercase letter (simple [[http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/#ubc|category]])|
| \p{Sc}|A currency symbol|
| \P{InGreek}|Any character except one in the Greek block (negation)|
|[\p{L}&&[^\p{Lu}]]|Any letter except an uppercase letter (subtraction)|
^ Boundary matchers ^^
|^|The beginning of a line|
|$|The end of a line|
|\b|A word boundary|
|\B|A non-word boundary|
|\A|The beginning of the input|
|\G|The end of the previous match|
|\Z|The end of the input but for the final [[http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/#lt|terminator]], if any|
|\z|The end of the input|
^ Greedy quantifiers ^^
|X?|X, once or not at all|
|X*|X, zero or more times|
|X+|X, one or more times|
|X{n}|X, exactly n times|
|X{n,}|X, at least n times|
|X{n,m}|X, at least n but not more than m times|
^ Reluctant quantifiers ^^
|X??|X, once or not at all|
|X*?|X, zero or more times|
|X+?|X, one or more times|
|X{n}?|X, exactly n times|
|X{n,}?|X, at least n times|
|X{n,m}?|X, at least n but not more than m times|
^ Possessive quantifiers ^^
|X?+|X, once or not at all|
|X*+|X, zero or more times|
|X++|X, one or more times|
|X{n}+|X, exactly n times|
|X{n,}+|X, at least n times|
|X{n,m}+|X, at least n but not more than m times|
^ Logical operators ^^
|XY|X followed by Y|
|X|Y|Either X or Y|
|(X)|X, as a [[http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/#cg|capturing group]]|
^ Back references ^^
|\n|Whatever the nth[[http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/#cg|capturing group]] matched|
^ Quotation ^^
|\|Nothing, but quotes the following character|
|\Q|Nothing, but quotes all characters until \E|
|\E|Nothing, but ends quoting started by \Q|
^ Special constructs (non-capturing) ^^
|(?:X)|X, as a non-capturing group|
|(?idmsux-idmsux)|Nothing, but turns match flags on - off|
|(?idmsux-idmsux:X)|X, as a [[http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/#cg|non-capturing group]] with the given flags on - off|
|(?=X)|X, via zero-width positive lookahead|
|(?!X)|X, via zero-width negative lookahead|
|(?<=X)|X, via zero-width positive lookbehind|
|(?X)|X, as an independent, non-capturing group|