OSDN Git Service

(split) Import translated manuals from JM CVS Repository.
[linuxjm/LDP_man-pages.git] / original / man7 / regex.7
1 .\" From Henry Spencer's regex package (as found in the apache
2 .\" distribution). The package carries the following copyright:
3 .\"
4 .\"  Copyright 1992, 1993, 1994 Henry Spencer.  All rights reserved.
5 .\"  This software is not subject to any license of the American Telephone
6 .\"  and Telegraph Company or of the Regents of the University of California.
7 .\"
8 .\"  Permission is granted to anyone to use this software for any purpose
9 .\"  on any computer system, and to alter it and redistribute it, subject
10 .\"  to the following restrictions:
11 .\"
12 .\"  1. The author is not responsible for the consequences of use of this
13 .\"     software, no matter how awful, even if they arise from flaws in it.
14 .\"
15 .\"  2. The origin of this software must not be misrepresented, either by
16 .\"     explicit claim or by omission.  Since few users ever read sources,
17 .\"     credits must appear in the documentation.
18 .\"
19 .\"  3. Altered versions must be plainly marked as such, and must not be
20 .\"     misrepresented as being the original software.  Since few users
21 .\"     ever read sources, credits must appear in the documentation.
22 .\"
23 .\"  4. This notice may not be removed or altered.
24 .\"
25 .\" In order to comply with `credits must appear in the documentation'
26 .\" I added an AUTHOR paragraph below - aeb.
27 .\"
28 .\" In the default nroff environment there is no dagger \(dg.
29 .\"
30 .\" 2005-05-11 Removed discussion of `[[:<:]]' and `[[:>:]]', which
31 .\"     appear not to be in the glibc implementation of regcomp
32 .\"
33 .ie t .ds dg \(dg
34 .el .ds dg (!)
35 .TH REGEX 7 2009-01-12 "" "Linux Programmer's Manual"
36 .SH NAME
37 regex \- POSIX.2 regular expressions
38 .SH DESCRIPTION
39 Regular expressions ("RE"s),
40 as defined in POSIX.2, come in two forms:
41 modern REs (roughly those of
42 .IR egrep ;
43 POSIX.2 calls these "extended" REs)
44 and obsolete REs (roughly those of
45 .BR ed (1);
46 POSIX.2 "basic" REs).
47 Obsolete REs mostly exist for backward compatibility in some old programs;
48 they will be discussed at the end.
49 POSIX.2 leaves some aspects of RE syntax and semantics open;
50 "\*(dg" marks decisions on these aspects that
51 may not be fully portable to other POSIX.2 implementations.
52 .PP
53 A (modern) RE is one\*(dg or more nonempty\*(dg \fIbranches\fR,
54 separated by \(aq|\(aq.
55 It matches anything that matches one of the branches.
56 .PP
57 A branch is one\*(dg or more \fIpieces\fR, concatenated.
58 It matches a match for the first, followed by a match for the second, etc.
59 .PP
60 A piece is an \fIatom\fR possibly followed
61 by a single\*(dg \(aq*\(aq, \(aq+\(aq, \(aq?\(aq, or \fIbound\fR.
62 An atom followed by \(aq*\(aq
63 matches a sequence of 0 or more matches of the atom.
64 An atom followed by \(aq+\(aq
65 matches a sequence of 1 or more matches of the atom.
66 An atom followed by \(aq?\(aq
67 matches a sequence of 0 or 1 matches of the atom.
68 .PP
69 A \fIbound\fR is \(aq{\(aq followed by an unsigned decimal integer,
70 possibly followed by \(aq,\(aq
71 possibly followed by another unsigned decimal integer,
72 always followed by \(aq}\(aq.
73 The integers must lie between 0 and
74 .B RE_DUP_MAX
75 (255\*(dg) inclusive,
76 and if there are two of them, the first may not exceed the second.
77 An atom followed by a bound containing one integer \fIi\fR
78 and no comma matches
79 a sequence of exactly \fIi\fR matches of the atom.
80 An atom followed by a bound
81 containing one integer \fIi\fR and a comma matches
82 a sequence of \fIi\fR or more matches of the atom.
83 An atom followed by a bound
84 containing two integers \fIi\fR and \fIj\fR matches
85 a sequence of \fIi\fR through \fIj\fR (inclusive) matches of the atom.
86 .PP
87 An atom is a regular expression enclosed in "\fI()\fP"
88 (matching a match for the regular expression),
89 an empty set of "\fI()\fP" (matching the null string)\*(dg,
90 a \fIbracket expression\fR (see below), \(aq.\(aq
91 (matching any single character), \(aq^\(aq (matching the null string at the
92 beginning of a line), \(aq$\(aq (matching the null string at the
93 end of a line), a \(aq\e\(aq followed by one of the characters
94 "\fI^.[$()|*+?{\e\fP"
95 (matching that character taken as an ordinary character),
96 a \(aq\e\(aq followed by any other character\*(dg
97 (matching that character taken as an ordinary character,
98 as if the \(aq\e\(aq had not been present\*(dg),
99 or a single character with no other significance (matching that character).
100 A \(aq{\(aq followed by a character other than a digit is an ordinary
101 character, not the beginning of a bound\*(dg.
102 It is illegal to end an RE with \(aq\e\(aq.
103 .PP
104 A \fIbracket expression\fR is a list of characters enclosed in "\fI[]\fP".
105 It normally matches any single character from the list (but see below).
106 If the list begins with \(aq^\(aq,
107 it matches any single character
108 (but see below) \fInot\fR from the rest of the list.
109 If two characters in the list are separated by \(aq\-\(aq, this is shorthand
110 for the full \fIrange\fR of characters between those two (inclusive) in the
111 collating sequence,
112 for example, "\fI[0\-9]\fP" in ASCII matches any decimal digit.
113 It is illegal\*(dg for two ranges to share an
114 endpoint, for example, "\fIa-c-e\fP".
115 Ranges are very collating-sequence-dependent,
116 and portable programs should avoid relying on them.
117 .PP
118 To include a literal \(aq]\(aq in the list, make it the first character
119 (following a possible \(aq^\(aq).
120 To include a literal \(aq\-\(aq, make it the first or last character,
121 or the second endpoint of a range.
122 To use a literal \(aq\-\(aq as the first endpoint of a range,
123 enclose it in "\fI[.\fP" and "\fI.]\fP"
124 to make it a collating element (see below).
125 With the exception of these and some combinations using \(aq[\(aq (see next
126 paragraphs), all other special characters, including \(aq\e\(aq, lose their
127 special significance within a bracket expression.
128 .PP
129 Within a bracket expression, a collating element (a character,
130 a multicharacter sequence that collates as if it were a single character,
131 or a collating-sequence name for either)
132 enclosed in "\fI[.\fP" and "\fI.]\fP" stands for the
133 sequence of characters of that collating element.
134 The sequence is a single element of the bracket expression's list.
135 A bracket expression containing a multicharacter collating element
136 can thus match more than one character,
137 for example, if the collating sequence includes a "ch" collating element,
138 then the RE "\fI[[.ch.]]*c\fP" matches the first five characters
139 of "chchcc".
140 .PP
141 Within a bracket expression, a collating element enclosed in "\fI[=\fP" and
142 "\fI=]\fP" is an equivalence class, standing for the sequences of characters
143 of all collating elements equivalent to that one, including itself.
144 (If there are no other equivalent collating elements,
145 the treatment is as if the enclosing delimiters
146 were "\fI[.\fP" and "\fI.]\fP".)
147 For example, if o and \o'o^' are the members of an equivalence class,
148 then "\fI[[=o=]]\fP", "\fI[[=\o'o^'=]]\fP",
149 and "\fI[o\o'o^']\fP" are all synonymous.
150 An equivalence class may not\*(dg be an endpoint
151 of a range.
152 .PP
153 Within a bracket expression, the name of a \fIcharacter class\fR enclosed
154 in "\fI[:\fP" and "\fI:]\fP" stands for the list
155 of all characters belonging to that
156 class.
157 Standard character class names are:
158 .PP
159 .RS
160 .nf
161 .ta 3c 6c 9c
162 alnum   digit   punct
163 alpha   graph   space
164 blank   lower   upper
165 cntrl   print   xdigit
166 .fi
167 .RE
168 .PP
169 These stand for the character classes defined in
170 .BR wctype (3).
171 A locale may provide others.
172 A character class may not be used as an endpoint of a range.
173 .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666
174 .\" The following does not seem to apply in the glibc implementation
175 .\" .PP
176 .\" There are two special cases\*(dg of bracket expressions:
177 .\" the bracket expressions "\fI[[:<:]]\fP" and "\fI[[:>:]]\fP" match
178 .\" the null string at the beginning and end of a word respectively.
179 .\" A word is defined as a sequence of
180 .\" word characters
181 .\" which is neither preceded nor followed by
182 .\" word characters.
183 .\" A word character is an
184 .\" .I alnum
185 .\" character (as defined by
186 .\" .BR wctype (3))
187 .\" or an underscore.
188 .\" This is an extension,
189 .\" compatible with but not specified by POSIX.2,
190 .\" and should be used with
191 .\" caution in software intended to be portable to other systems.
192 .PP
193 In the event that an RE could match more than one substring of a given
194 string,
195 the RE matches the one starting earliest in the string.
196 If the RE could match more than one substring starting at that point,
197 it matches the longest.
198 Subexpressions also match the longest possible substrings, subject to
199 the constraint that the whole match be as long as possible,
200 with subexpressions starting earlier in the RE taking priority over
201 ones starting later.
202 Note that higher-level subexpressions thus take priority over
203 their lower-level component subexpressions.
204 .PP
205 Match lengths are measured in characters, not collating elements.
206 A null string is considered longer than no match at all.
207 For example,
208 "\fIbb*\fP" matches the three middle characters of "abbbc",
209 "\fI(wee|week)(knights|nights)\fP"
210 matches all ten characters of "weeknights",
211 when "\fI(.*).*\fP" is matched against "abc" the parenthesized subexpression
212 matches all three characters, and
213 when "\fI(a*)*\fP" is matched against "bc"
214 both the whole RE and the parenthesized
215 subexpression match the null string.
216 .PP
217 If case-independent matching is specified,
218 the effect is much as if all case distinctions had vanished from the
219 alphabet.
220 When an alphabetic that exists in multiple cases appears as an
221 ordinary character outside a bracket expression, it is effectively
222 transformed into a bracket expression containing both cases,
223 for example, \(aqx\(aq becomes "\fI[xX]\fP".
224 When it appears inside a bracket expression, all case counterparts
225 of it are added to the bracket expression, so that, for example, "\fI[x]\fP"
226 becomes "\fI[xX]\fP" and "\fI[^x]\fP" becomes "\fI[^xX]\fP".
227 .PP
228 No particular limit is imposed on the length of REs\*(dg.
229 Programs intended to be portable should not employ REs longer
230 than 256 bytes,
231 as an implementation can refuse to accept such REs and remain
232 POSIX-compliant.
233 .PP
234 Obsolete ("basic") regular expressions differ in several respects.
235 \(aq|\(aq, \(aq+\(aq, and \(aq?\(aq are
236 ordinary characters and there is no equivalent
237 for their functionality.
238 The delimiters for bounds are "\fI\e{\fP" and "\fI\e}\fP",
239 with \(aq{\(aq and \(aq}\(aq by themselves ordinary characters.
240 The parentheses for nested subexpressions are "\fI\e(\fP" and "\fI\e)\fP",
241 with \(aq(\(aq and \(aq)\(aq by themselves ordinary characters.
242 \(aq^\(aq is an ordinary character except at the beginning of the
243 RE or\*(dg the beginning of a parenthesized subexpression,
244 \(aq$\(aq is an ordinary character except at the end of the
245 RE or\*(dg the end of a parenthesized subexpression,
246 and \(aq*\(aq is an ordinary character if it appears at the beginning of the
247 RE or the beginning of a parenthesized subexpression
248 (after a possible leading \(aq^\(aq).
249 .PP
250 Finally, there is one new type of atom, a \fIback reference\fR:
251 \(aq\e\(aq followed by a nonzero decimal digit \fId\fR
252 matches the same sequence of characters
253 matched by the \fId\fRth parenthesized subexpression
254 (numbering subexpressions by the positions of their opening parentheses,
255 left to right),
256 so that, for example, "\fI\e([bc]\e)\e1\fP" matches "bb" or "cc" but not "bc".
257 .SH BUGS
258 Having two kinds of REs is a botch.
259 .PP
260 The current POSIX.2 spec says that \(aq)\(aq is an ordinary character in
261 the absence of an unmatched \(aq(\(aq;
262 this was an unintentional result of a wording error,
263 and change is likely.
264 Avoid relying on it.
265 .PP
266 Back references are a dreadful botch,
267 posing major problems for efficient implementations.
268 They are also somewhat vaguely defined
269 (does
270 "\fIa\e(\e(b\e)*\e2\e)*d\fP" match "abbbd"?).
271 Avoid using them.
272 .PP
273 POSIX.2's specification of case-independent matching is vague.
274 The "one case implies all cases" definition given above
275 is current consensus among implementors as to the right interpretation.
276 .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666
277 .\" The following does not seem to apply in the glibc implementation
278 .\" .PP
279 .\" The syntax for word boundaries is incredibly ugly.
280 .SH AUTHOR
281 .\" Sigh... The page license means we must have the author's name
282 .\" in the formatted output.
283 This page was taken from Henry Spencer's regex package.
284 .SH "SEE ALSO"
285 .BR grep (1),
286 .BR regex (3)
287 .PP
288 POSIX.2, section 2.8 (Regular Expression Notation).