File: regex.7

package info (click to toggle)
manpages-es 1.24a-6
  • links: PTS
  • area: main
  • in suites: potato
  • size: 4,256 kB
  • ctags: 7
  • sloc: makefile: 66; sh: 62
file content (264 lines) | stat: -rw-r--r-- 12,251 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
.\" From Henry Spencer's regex package (as found in the apache
.\" distribution). The package carries the following copyright:
.\"
.\"  Copyright 1992, 1993, 1994 Henry Spencer.  All rights reserved.
.\"  This software is not subject to any license of the American Telephone
.\"  and Telegraph Company or of the Regents of the University of California.
.\"  
.\"  Permission is granted to anyone to use this software for any purpose
.\"  on any computer system, and to alter it and redistribute it, subject
.\"  to the following restrictions:
.\"  
.\"  1. The author is not responsible for the consequences of use of this
.\"     software, no matter how awful, even if they arise from flaws in it.
.\"  
.\"  2. The origin of this software must not be misrepresented, either by
.\"     explicit claim or by omission.  Since few users ever read sources,
.\"     credits must appear in the documentation.
.\"  
.\"  3. Altered versions must be plainly marked as such, and must not be
.\"     misrepresented as being the original software.  Since few users
.\"     ever read sources, credits must appear in the documentation.
.\"  
.\"  4. This notice may not be removed or altered.
.\" 
.\" In order to comply with `credits must appear in the documentation'
.\" I added an AUTHOR paragraph below - aeb.
.\"
.\" Translated 23 Jul 1998 by Juan Jos Lpez Mellado (laveneno@hotmail.com)
.\"
.TH REGEX 7 "7 Febrero 1994"
.SH NOMBRE
regex \- expresiones regulares POSIX 1003.2
.SH DESCRIPCIN
Las expresiones regulares (``ER''s), tal y como se definen en POSIX 1003.2,
tienen dos formas:
ERs modernas (tal y como
.IR egrep ;
llama a estas ERs ``extendidas'' de 1003.2)
y ERs obsoletas (las que usa
.IR ed ;
son ERs ``bsicas'' de 1003.2).

Las ERs obsoletas existen como tales por mantener la compatibilidad para
algunos viejos programas; y sern discutidas al final.

1003.2 deja abiertos algunos aspectos de la sintaxis y semntica de 
las ER;
`(dg' es una de las decisiones tomadas al respecto de estos
temas que puede no ser portable con otras implementaciones de 
la 1003.2.
.PP
Una ER (moderna) es una \(dg o ms de una\(dg \fIrama\fR no vaca,
separadas por `|'.
Acepta cualquier cosa que se corresponda con una de las ramas.
.PP
Una rama es una \(dg o ms de una \fIpieza\fR, concatenadas.
Acepta algo que corresponda con la primera, seguida por algo que
corresponda con la segunda, etc.
.PP
Una pieza es un \fItomo\fR posiblemente seguido por un solo
\(dg `*', `+', `?', o por un \fIlmite\fR.
Un tomo seguido por `*' ajusta con una secuencia de 0 o ms tomos.
Un tomo seguido por `+' ajusta con una secuencia de 1 o ms tomos.
Un tomo seguido por `?'  ajusta con una secuencia de 0 o 1 tomo.
.PP
Un \fIlmite\fR es un `{' seguido por un entero decimal sin signo,
posiblemente seguido por una `,' posiblemente seguida por otro
entero decimal sin signo, y todo acabado por un `}'.
Los enteros deben encontrarse entre 0 y RE_DUP_MAX (255\(dg)
inclusive, y si hay dos de ellos, el primero no podr ser mayor
que el segundo.
Un tomo seguido por un lmite conteniendo un solo entero \fIi\fR
y sin coma ajusta con una secuencia de exactamente \fIi\fR
tomos.
Un tomo seguido por un lmite conteniendo un entero \fIi\fR
y una coma ajusta con una secuencia de \fIi\fR o ms tomos.
Un tomo seguido por un lmite conteniendo dos enteros \fIi\fR
y \fIj\fR ajusta con una secuencia de entre \fIi\fR y \fIj\fR
tomos (ambos inclusive).
.PP
Un tomo es una expresin regular dentro de `()' (ajustndose
con una aparicin de la expresin regular),
un conjunto vaco de `()' (ajustando con una cadena vaca)\(dg,
una \fIexpresin con corchetes\fR (ver abajo), `.'
(ajustndose con un solo carcter), `^' (ajustando con la cadena
vaca al principio de una linea), `$' (ajustando con la cadena 
vaca al final de una linea), un `\e' seguido por uno de los
caracteres `^.[$()|*+?{\e' (ajustando con ese carcter tenido
como un carcter normal), un `\e' seguido por otro carcter\(dg
(ajustando con ese carcter tenido como un carcter ordinario,
como si el `\e' no estuviera presente\(dg), o un solo carcter
sin ningn otro significado adicional (ajustando con ese
carcter).
Un `{' seguido por un carcter diferente de un dgito es un
carcter ordinario, no el principio de un lmite.\(dg
Es ilegal terminar una ER con `\e'.
.PP
Una \fIexpresin con corchetes\fR es una lista de caracteres entre
unos `[]'. Normalmente ajusta con solo uno de los caracteres de la
lista (pero vea ms adelante).
Si la lista comienza por `^', ajusta con un solo carcter (pero vea
ms adelante) que \fIno\fR pertenezca al resto de la lista.
Si hay en la lista dos caracteres separados por `-', es una abreviacin
de un \fIrango\fR completo de caracteres entre dos (inclusive) en la 
secuencia, por ejemplo `[0-9]' en ASCII ajusta con cualquier dgito decimal.
Es ilegal\(dg que dos rangos compartan un carcter, por ejemplo `a-c-e'.

Los rangos son muy dependientes de la secuencia de especificacin y los
programas portables deberan evitar utilizarlos.
.PP
Para incluir un literal `]' en la lista, debe aparecer el primero
en la misma (siguiendo a un posible `^').
Para incluir un literal `\-', debe aparecer el primero o el
ltimo en la lista, o ser el segundo carcter de un rango.

Para usar un literal `\-' como el primer carcter de un rango,
debe rodearse entre `[.' y `.]' para hacerlo un elemento a tratar
(vea ms abajo).
Con la excepcin de estas y algunas combinaciones que usan `[' (vea los
siguientes prrafos), todos los otros caracteres especiales, incluyendo
`\e', pierden su significado especial dentro de una expresin entre
corchetes.
.PP
Dentro de una expresin entre corchetes, un elemento a tratar (un
carcter, una secuencia de ms de un carcter que se interpreta como
si fuera un solo carcter, o un nombre de secuencia de definicin
incluido entre `[.' y `.]' se entiende
como la secuencia de caracteres de ese elemento.
La secuencia es un elemento aislado de la lista contenida en la
expresin con corchetes. Una expresin con corchetes que contenga
un elemento de ms de un carcter puede ajustar por ms de un carcter,
por ejemplo si la secuencia incluye un elemento `ch', entonces la
ER `[[.ch.]]*c' ajusta con los primeros cinco caracteres de `chchcc'.
.PP
Dentro de una expresin con corchetes, un elemento englobado entre
`[=' y `=]' es una clase de equivalencia, comprendiendo las secuencias
de caracteres de todos los elementos equivalentes a ese otro, incluyndose
a l mismo. (Si no hay ningn otro elemento equivalente, el tratamiento
es como si los delimitadores hubieran sido `[.' y `.]'.)
Por ejemplo, si o y \o'o^' son miembros de una clase de equivalencia,
entonces, entonces `[[=o=]]', `[[=\o'o^'=]]', y `[o\o'o^']' son todos
sinnimos.
Una clase de equivalencia no\(dg puede formar parte de un rango.
.PP
Dentro de una expresin con corchetes, el nombre de una \fIclase de
caracteres\fR englobado entre `[:' y `:]' se interpreta como la lista
de todos los caracteres que pertenecen a esa clase.
Los nombre de clase de caracteres estndar son:
.PP
.RS
.nf
.ta 3c 6c 9c
alnum	digit	punct
alpha	graph	space
blank	lower	upper
cntrl	print	xdigit
.fi
.RE
.PP
Estn compuestos por las clases de caracteres definidos en
.IR ctype (3).
Localmente podrn proveerse de otras.
Una clase de caracteres no puede formar parte de un rango.
.PP
Hay dos casos especiales\(dg de expresiones con corchetes:
las expresiones con corchetes `[[:<:]]' y `[[:>:]]' ajustan con
la cadena vaca del principio y final de una palabra, 
respectivamente.
Una palabra se define como una secuencia de caracteres de
palabra que no se encuentra ni precedida ni seguida por
caracteres de palabra.
Un carcter de palabra es un carcter de la clase
.I alnum
(tal y como se define en
.IR ctype (3))
o un carcter de subrayado.
Esta es una extensin, compatible pero no especificada por POSIX 1003.2,
y debe ser usada con cuidado en aquel software que deba ser portable
a otros sistemas.
.PP
En el caso en que una ER puede ajustar con ms de una subcadena de la cadena
dada, la ER se ajusta con aquella que comience antes en la cadena dada.
Si la ER puede ajustar con varias subcadenas que comienzan en el mismo punto,
se ajusta con la ms larga.
Las subexpresiones tambin ajustan con las subcadenas ms largas posibles,
sujetas a la restriccin de que el ajuste global sea el ms largo posible,
con subexpresiones que empiecen antes en la ER con mayor prioridad que
aquellas que comiencen despus.

Ntese que las subexpresiones de nivel ms alto tienen prioridad respecto a sus
subexpresiones componentes de nivel inferior.
.PP
Las longitudes de los ajustes son medidas en caracteres, no en elementos.
Una cadena vaca se considera ms larga que cualquier otro ajuste.
Por ejemplo,
`bb*' se ajusta con los tres caracteres del centro de `abbbc',
`(wee|week)(knights|nights)' se ajusta con los diez caracteres de
`weeknights' , cuando `(.*).*' se intenta ajustar con `abc' la subexpresin
se ajusta con los tres caracteres, y cuando `(a*)*' se intenta ajustar con
`bc' tanto la ER como la subexpresin entre parntesis se ajustan a la
cadena vaca.
.PP
Si se ha especificado un ajuste no dependiente de las maysculas, el efecto
es como si todas las distinciones entre maysculas y minsculas hubieran
desaparecido del alfabeto.
Cuando un trmino del alfabeto existe tanto en maysculas como en minsculas
aparece como un carcter ordinario fuera de una expresin con corchetes, se
transforma en una expresin con corchetes conteniendo los dos casos, por
ejemplo, `x' se convierte en `[xX]'.
Cuando aparece dentro de una expresin con corchetes, todos los casos
posibles son aadidos a la expresin con corchetes, de tal manera que
(por ejemplo) `[x]' se convierte en `[xX]' y `[^x]' se convierte en
`[^xX]'.
.PP
No se impone ningn lmite en particular en la longitud de las ERs\(dg.
Los programas que deban ser portables no deben emplear ERs ms largas
de 256 bytes, ya que una implementacin puede rechazar el aceptar
estas ERs y seguir cumpliendo POSIX.
.PP
Las expresiones regulares obsoletas (``basic'') difieren en varios
aspectos.  `|', `+', y `?' son caracteres ordinarios y no existe el equivalente
para sus funcionalidades.
Los delimitadores para los lmites son `\e{' y `\e}', con `{' y `}' como
caracteres ordinarios. Los parntesis para subexpresiones anidadas son
`\e(' y `\e)', siendo `(' y `)' caracteres ordinarios.
`^' es un carcter ordinario excepto en el principio de la ER o\(dg al
principio de una subexpresin con parntesis, `$' es un carcter ordinario
excepto al final de la ER o\(dg al final de una subexpresin con
parntesis, y `*' es un carcter ordinario si aparece al principio de la
ER o al principio de una subexpresin con parntesis (despus de un posible
`^' inicial).
Finalmente, existe un nuevo tipo de tomo, la \fIreferencia hacia atrs\fB:
`\e' seguido por un dgito decimal mayor que cero \fId\fR ajusta con la misma
secuencia de caracteres ajustada por la subexpresin con parntesis
\fId\fR-sima (numerando las subexpresiones por las posiciones de sus
parntesis de apertura, y de izquierda a derecha), de tal manera que
(por ejemplo) `\e([bc]\e)\e1' ajusta con `bb' o `cc' pero no con `bc'.
.SH VASE TAMBIN
regex(3)
.PP
POSIX 1003.2, seccin 2.8 (Regular Expression Notation).
.SH FALLOS
Tener dos tipos de ERs es molesto.
.PP
La especificacin actual de 1003.2 dice que un `)' es un carcter ordinario
en ausencia de un `(' sin ajustar; este fue un resultado no intencionado
de un error de redaccin, y es probable que sea modificado.
Evite usarlo.
.PP
Las referencias hacia atrs son una espantosa `chapuza', aadiendo bastantes
problemas para una implementacin eficiente.
Tambin hay cosas vagamente definidas ( `a\e(\e(b\e)*\e2\e)*d' ajusta con
`abbbd'?). Evite usarlo.
.PP
La especificacin 1003.2 sobre el ajuste independiente de maysculas es
muy vaga. La definicin ``maysculas o minsculas implican al otro''
.BR "" "(" "N. del T."
``one case implies all cases'') dada arriba es un consenso entre todos los
implementadores como la buena interpretacin.
.PP
La sintaxis para lmites de palabras es increblemente desagradable.
.SH AUTOR
Esta pgina ha sido obtenida del paquete regex de Henry Spencer.