|  | .TH REGEXP 7 | 
|  | .SH NAME | 
|  | regexp \- Plan 9 regular expression notation | 
|  | .SH DESCRIPTION | 
|  | This manual page describes the regular expression | 
|  | syntax used by the Plan 9 regular expression library | 
|  | .IR regexp (3). | 
|  | It is the form used by | 
|  | .IR egrep (1) | 
|  | before | 
|  | .I egrep | 
|  | got complicated. | 
|  | .PP | 
|  | A | 
|  | .I "regular expression" | 
|  | specifies | 
|  | a set of strings of characters. | 
|  | A member of this set of strings is said to be | 
|  | .I matched | 
|  | by the regular expression.  In many applications | 
|  | a delimiter character, commonly | 
|  | .LR / , | 
|  | bounds a regular expression. | 
|  | In the following specification for regular expressions | 
|  | the word `character' means any character (rune) but newline. | 
|  | .PP | 
|  | The syntax for a regular expression | 
|  | .B e0 | 
|  | is | 
|  | .IP | 
|  | .EX | 
|  | e3:  literal | charclass | '.' | '^' | '$' | '(' e0 ')' | 
|  |  | 
|  | e2:  e3 | 
|  | |  e2 REP | 
|  |  | 
|  | REP: '*' | '+' | '?' | 
|  |  | 
|  | e1:  e2 | 
|  | |  e1 e2 | 
|  |  | 
|  | e0:  e1 | 
|  | |  e0 '|' e1 | 
|  | .EE | 
|  | .PP | 
|  | A | 
|  | .B literal | 
|  | is any non-metacharacter, or a metacharacter | 
|  | (one of | 
|  | .BR .*+?[]()|\e^$ ), | 
|  | or the delimiter | 
|  | preceded by | 
|  | .LR \e . | 
|  | .PP | 
|  | A | 
|  | .B charclass | 
|  | is a nonempty string | 
|  | .I s | 
|  | bracketed | 
|  | .BI [ \|s\| ] | 
|  | (or | 
|  | .BI [^ s\| ]\fR); | 
|  | it matches any character in (or not in) | 
|  | .IR s . | 
|  | A negated character class never | 
|  | matches newline. | 
|  | A substring | 
|  | .IB a - b\f1, | 
|  | with | 
|  | .I a | 
|  | and | 
|  | .I b | 
|  | in ascending | 
|  | order, stands for the inclusive | 
|  | range of | 
|  | characters between | 
|  | .I a | 
|  | and | 
|  | .IR b . | 
|  | In | 
|  | .IR s , | 
|  | the metacharacters | 
|  | .LR - , | 
|  | .LR ] , | 
|  | an initial | 
|  | .LR ^ , | 
|  | and the regular expression delimiter | 
|  | must be preceded by a | 
|  | .LR \e ; | 
|  | other metacharacters | 
|  | have no special meaning and | 
|  | may appear unescaped. | 
|  | .PP | 
|  | A | 
|  | .L . | 
|  | matches any character. | 
|  | .PP | 
|  | A | 
|  | .L ^ | 
|  | matches the beginning of a line; | 
|  | .L $ | 
|  | matches the end of the line. | 
|  | .PP | 
|  | The | 
|  | .B REP | 
|  | operators match zero or more | 
|  | .RB ( * ), | 
|  | one or more | 
|  | .RB ( + ), | 
|  | zero or one | 
|  | .RB ( ? ), | 
|  | instances respectively of the preceding regular expression | 
|  | .BR e2 . | 
|  | .PP | 
|  | A concatenated regular expression, | 
|  | .BR "e1\|e2" , | 
|  | matches a match to | 
|  | .B e1 | 
|  | followed by a match to | 
|  | .BR e2 . | 
|  | .PP | 
|  | An alternative regular expression, | 
|  | .BR "e0\||\|e1" , | 
|  | matches either a match to | 
|  | .B e0 | 
|  | or a match to | 
|  | .BR e1 . | 
|  | .PP | 
|  | A match to any part of a regular expression | 
|  | extends as far as possible without preventing | 
|  | a match to the remainder of the regular expression. | 
|  | .SH "SEE ALSO" | 
|  | .IR regexp (3) |