File: regex.7

package info (click to toggle)
manpages-pt 20040726-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,988 kB
  • sloc: sh: 45; makefile: 16
file content (265 lines) | stat: -rw-r--r-- 12,084 bytes parent folder | download | duplicates (6)
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
265
.\" -*- nroff -*-
.\" 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.
.\"
.TH REGEX 7 "07/02/1994"
.SH NOME
regex \- expresses regulares do POSIX 1003.2 
.SH DESCRIO
Expresses regulares (ERs),
como definidas no POSIX 1003.2, vm em duas formas:
REs modernas (grosseiramente, aquelas de
.IR egrep ;
o 1003.2 chama essas de ERs "estendidas" ERs) e ERs obsoletas
(grosseiramente, aquelas de
.BR ed (1);
REs "bsicas" do 1003.2).
REs obsoletas existem principalmente por causa de compatibilidade retrgrada em alguns programas antigos;
eles sero discutidos no final. O
1003.2 deixa alguns aspectos da sintaxe e da semntica das ERs em aberto;
'\(dg' marca decises nesses aspectos que no podem ser totalmente
portveis para outras implementaes do 1003.2.
.PP
Uma (moderna) ER  uma\(dg ou mais\(dg \fIramificaes\fR\(dg
no-vazias\(dg , separadas por '|'.
Ele encontra tudo o que casa com uma das ramificaes.
.PP
Uma ramificao  um\(dg ou mais \fIpedaos\fR, concatenados.
Ele encontra um casamento para o primeiro, seguido por um casamento para o segundo, etc.
.PP
Um pedao  um \fItomo\fR possivelmente seguido por um \(dg '*', '+',
'?', simples ou composto.
Um tomo seguido por '*' encontra uma sequncia de 0 ou mais casamentos do tomo.
Um tomo seguido por '+' encontra uma sequncia de 1 ou mais casamentos do tomo.
Um tomo seguido por '?' encontra uma sequncia de 0 ou 1 casamento do tomo.
.PP 
Uma composio  '{' seguido por um inteiro decimal sem sinal,
possivelmente seguido por ','
, possivelmente  seguido por outro inteiro
decimal sem sinal, sempre seguido por '}'.
Os inteiros devem estar entre 0 e RE_DUP_MAX (255\(dg) inclusive,
e se houver dois deles, o primeiro e no pode exceder o segundo.
Um tomo seguido por uma composio contendo um inteiro \fIi\fR,
sem vrgula, encontra uma
sequncia de \fIi\fR ou mais casamentos do tomo.
Um tomo seguido por uma composio
contendo dois inteiros \fIi\fR encontra
uma sequencia de um mais \fIi\fR casamentos do tomo.
Um tomo seguido por uma composio
contendo dois inteiros \fIi\fR e \fIj\fR encontra
uma sequncia de \fIi\fR at \fIj\fR (inclusive) casamentos do tomo.
.PP
Um tomo  uma expresso regular englobada em '()' (encontrando um casamento
para a expresso regular),
um conjunto vazio de '()' (encontrando a string nula)\(dg,
uma \fIexpresso agrupada\fR (ver abaixo), '.'
(encontrando qualquer caractere simples), '^' (encontrando a string nula no
comeo de uma linha), '$' (encontrando a string nula no
fim de uma linha), um '\e' seguido de um dos caracteres
'^.[$()|*+?{\e'
(encontrando aquele caractere tomado como um caractere ordinrio),
um '\e' seguido por qualquer outro caractere\(dg
(encontrando aquele caractere tomado como um caractere ordinrio,
como se o '\e' no estivesse presente\(dg),
ou um caractere simples se outro significado (encontrando qualquer caractere).
Um '{' seguido por um caractere diferente de um dgito  um caractere
ordinrio, no o incio de uma composio\(dg.
 ilegal terminar uma ER com '\e'.
.PP
Uma \fIexpresso agrupada\fR  uma lista de caracteres englobados por um '[]'.
Ele normalmente encontra qualquer caractere simples da lista (mas veja abaixo).
Se a lista comea com '^',
ele encontra qualquer caractere simples
(mas veja abaixo) que no venha do resto da lista.
Se dois caracteres na lista so separados por '\-', isto  uma abreviao
para a \fIrange\fR completa de caracteres entre aqueles dois (inclusive) na
sequncia de combinao,
por exemplo, '[0-9]' em ASCII encontra qualquer dgito decimal.
 ilegal \(dg que duas faixas compartilhem um
ponto final, por exemplo, 'a-c-e'.
As faixas so muito dependentes de sequncia de combinao,
e programas portveis devem evitar confiar nelas.
.PP
Para incluir um literal ']' na lista, torne-o o primeiro caractere
(seguindo um possvel '^').
Para incluir um literal '\-', torne-o o primeiro ou o ltimo caractere,
ou o segundo ponto final da faixa.
Para usar um literal '\-' como o primeiro ponto final da faixa,
englobe-o entre '[.' e '.]' para torn-lo um elemento de combinao (veja abaixo).
Com a exceo destas e algumas combinaes usando '[' (veja os prximos
pargrafos), todos os outros caracteres especiais, incluindo '\e', perdem seu
significado especial dentro de uma expresso agrupada.
.PP
Dentro de uma expresso agrupada, um elemento de combinao (um caractere,
uma sequncia multi-caractere que combina como se fosse um caractere simples,
ou um nome de sequncia de combinao se for o caso)
englobado entre '[.' e '.]' significa a
sequncia de caracteres daquele elemento de combinao.
A sequncia  um elemento simples de uma lista de expresses agrupada. 
Uma expresso agrupada contendo um elemento de combinao multi-caractere
pode, portanto, encontrar mais de um caractere,
por exemplo, se a sequncia de combinao inclui um elemento de combinao 'ch',
ento a ER '[[.ch.]]*c' encontra os primeiros cinco caracteres 
de 'chchcc'.
.PP
Dentro de uma expresso agrupada, um elemento de combinao englobado por '[='
e '=]'  uma classe equivalente, que significa uma sequncia de caracteres
com todos os elementos de combinao equivalentes a aquele, incluindo ele mesmo.
(Se no houver outro elemento de combinao equivalente,
o tratamento  como se os delimitadores fossem '[.' e '.]'.)
Por exemplo, se o e \o'o^' so os membros de uma classe equivalente,
ento '[[=o=]]', '[[=\o'o^'=]]', e '[o\o'o^']' so todos sinnimos.
Uma classe equivalente no pode \(dg ser um ponto final
de uma faixa.
.PP
Dentro de uma expresso agrupada, o nome de uma \fIclasse de caractere\fR englobado
por '[:' e ':]' significa a lista de todos os caracteres pertencente quela
classe.
Os nomes padro de classes de caracteres so:
.PP
.RS
.nf
.ta 3c 6c 9c
alnum	digit	punct
alpha	graph	space
blank	lower	upper
cntrl	print	xdigit
.fi
.RE
.PP
Isto vale para as classes de caracteres definidas em
.BR ctype (3).
Um locale pode fornecer outros.
Uma classe de caracteres no pode ser usada como um ponto final de uma faixa.
.PP
H dois casos especiais de expresses de colchetes:
as expresses '[[:<:]]' e '[[:>:]]' casam com a string nula no
incio e no fim de uma palavra, respectivamente.
Uma palavra  definida como uma sequncia de
caracteres de palavras
que no  precedida e nem seguida por
caracteres de palavra.
Um caractere de palavra  um caractere
.I alnum
(como definido por
.BR ctype (3))
ou um sublinhado.
Esta  uma extenso,
compatvel mas no especfica do POSIX 1003.2,
e deve ser usada com
cautela em softwares que pretendem ser portveis para outros sistemas.
.PP
Em um evento em que uma ER encontraria mais de uma substring de uma string
dada,
a ER encontra aquela que inicia mais prxima do incio da string.
Se a ER pode encontrar mais que uma substring comeando naquele ponto,
ela encontra a mais longa.
Sub-expresses tambm podem encontrar a substring mais longa possvel, sujeitando-se
 limitao de o casamento todo ser to longo quanto possvel,
com sub-expresses iniciando primeiro na ER tendo prioridade sobre
aquelas iniciando posteriormente.
Note que sub-expresses de nvel mais alto, portanto, tm prioridade sobre
suas sub-expresses componentes de nvel mais baixo.
.PP
Os comprimentos dos casamentos so medidos em caracteres, e no em elementos de combinao.
Uma string nula  considerada mais longa do que um caso de no se encontrar nada.
Por exemplo,
'bb*' encontra os trs caracteres centrais de 'abbbc',
'(wee|week)(knights|nights)' casa todos os dez caracteres de 'weeknights',
quando '(.*).*'  aplicado em 'abc' a sub-expresso entre parnteses
casa todos os trs caracteres, e
quando '(a*)*'  aplicado em 'bc' ambas as ERs inteiras e a sub-expresso
entre parnteses encontram a string nula.
.PP
Se casamento independente da caixa  especificado,
o efeito  tal como se todas as distines de caixa sumissem do
alfabeto.
Quando um alfabtico que existe em mltiplos casos aparece como um
caractere ordinrio fora de uma expresso de colchete,  transformado
efetivamente em uma expresso de colchetes contendo ambos os casos,
por exemplo, 'x' se torna '[^xX]'.
Quando ele aparece dentro de uma expresso de colchetes, todos os casos
equivalentes a ele so acrescentados  expresso de colchetes, de forma que (por exemplo) '[x]'
se torna '[xX]' e '[^xX]'.
.PP
Nenhum limite particular  imposto sobre o comprimento das ERs\(dg.
Programas que pretendem ser portveis no devem empregar ERs
maiores de 256 bytes,
pois uma implementao pode negar-se a aceitar tais ERs para continuar
compatvel com o POSIX.
.PP
Expresses regulares obsoletas ("bsicas") diferem em vrios aspectos.
Os sinais '+', '|' e '?' so caracteres ordinrios e no h equivalentes
para suas funcionalidades.
Os delimitadores para composio so '\e{' and '\e}',
com '{' e '}' por eles mesmos caracteres ordinrios.
Os parnteses para sub-expresses aninhadas so '\e(' e '\e)',
com '(' e ')', por eles mesmos caracteres ordinrios.
O '^'  um caractere ordinrio, exceto no comeo de uma
ER ou \(dg no comeo de uma sub-expresso com parnteses,
o '$'  um caractere ordinrio, exceto no fim da
ER ou \(dg no fim da sub-expresso com parnteses,
e '*'  um caractere ordinrio se ele aparece no comeo da
ER ou no comeo de uma sub-expresso com parnteses
(depois de um possvel '^' dianteiro).  
Finalmente, h um novo tipo de tomo, uma \fIreferncia para trs\fR:
'\e' seguido por um dgito decimal diferente de zero \fId\fR
casa com a mesma sequncia de caracteres
casada pela sub-expresso de parnteses
(numerando sub-expresses pelas posies dos seus parnteses abertos,
da esquerda para a direita),
tal que (por exemplo) '\e([bc]\e)\e1' case com 'bb' ou 'cc', mas no com 'bc'.
.SH "VEJA TAMBM"
.BR regex (3)
.PP
POSIX 1003.2, seo 2.8 (Notao de Expresso Regular).
.SH PROBLEMAS
Ter dois tipos de ERs  uma devastao.
.PP
A especificao corrente do 1003.2 diz que ')'  um caractere ordinrio
na ausncia de um '(' no casado;
este era um resultado no-intencional de um erro de palavreamento,
e mudanas so parecidas.
Evite confiar nela.
.PP
Referncias para trs so uma destruio terrvel,
causando problemas srios em implementaes eficientes.
Elas tambm so definidas um pouco vagamente
(fazendo
'a\e(\e(b\e)*\e2\e)*d' encontra 'abbbd'?).
Evite us-las.
.PP
A especificao 1003.2 para casamentos independentes de caixa  vaga.
A definio "um caso implica em todos os casos" dada acima
 um consenso corrente entre implementadores como a interpretao correta.
.PP
A sintaxe para os limites de palavra  incrivelmente feia.
.SH AUTOR
Esta pgina foi tomada do pacote regex de Henry Spencer.
.SH TRADUZIDO POR LDP-BR em 21/08/2000.
\&\fR\&\f(CWRubens de Jesus Nogueira <darkseid99@usa.net> (traduo)\fR
\&\fR\&\f(CWAndr L. Fassone Canova <lonelywolf@blv.com.br> (reviso)\fR