Expressões Regulares.pdf
Click here to load reader
-
Upload
diogenes-roberto -
Category
Documents
-
view
17 -
download
5
Transcript of Expressões Regulares.pdf
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 1 de 17
Expresso Regular (ER)
Uma Expresso Regular (ER) um mtodo formal de se especificar um padro de texto.
uma composio de smbolos, caracteres com funes especiais, chamados "metacaracteres" que, agrupados entre si e com caracteres literais, formam uma seqncia, uma expresso. Essa expresso testada em textos e retorna sucesso caso esse texto obedea exatamente a todas as suas condies. Dizse que o texto "casou" (match) com a expresso.
A ERs servem para se dizer algo abrangente de forma especfica. Definido o padro de busca, temse uma lista (finita ou no) de possibilidades de casamento.
Em um exemplo rpido, [rgp]ato pode casar "rato", "gato" e "pato".
As ERs so teis para buscar ou validar textos variveis como:
data horrio nmero IP endereo de email endereo de Internet declarao de uma funo() dados na coluna N de um texto dados que esto entre nmero de telefone, RG, CPF, carto de crdito
Vrios editores de texto e linguagens de programao tm suporte a ERs, ento o tempo investido em seu aprendizado recompensado pela larga variedade de aplicativos onde ele pode ser praticado.
Definio de Expresso Regular
Uma expresso regular (ER) sobre um alfabeto indutivamente definida como se segue:
a) uma ER que denota a linguagem vazia.
b) uma ER que denota a linguagem contendo exclusivamente a palavra vazia, ou seja {}.
c) Qualquer smbolo x pertencente ao alfabeto uma ER e denota a linguagem contendo a palavra unitria x, ou seja {x}.
d) Se r e s so ERs e denotam respectivamente as linguagens R e S, respectivamente, ento: 1. (r+s) ER e denota a linguagem R U S 2. (rs) ER e denota a linguagem {uv | u R e v S} 3. (r*) ER e denota a linguagem R
Exemplos: Expresso Regular Linguagem Representada aa Somente a palavra aa. ba* Todas as palavras que iniciam por b, seguido de zero ou mais a. (a+b)* Todas as palavras sobre o alfabeto {a, b} (a+b)*aa(a+b)* Todas as palavras contendo aa como subpalavra. a*ba*ba* Todas as palavras contendo exatamente dois b
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 2 de 17
(a+b)*(aa+bb) Todas as palavras que terminam com aa ou bb. (a+)(b+ba)* Todas as palavras que no possuem dois a consecutivos
1) Conhecendo cada um dos metacaracteres
Cada metacaractere uma ferramenta que tem uma funo especfica. Eles servem para dar mais poder s pesquisas, informando padres e posies impossveis de se especificar usando somente caracteres normais.
Os metacaracteres so pequenos pedacinhos simples que agrupados entre si, ou com caracteres normais, formam algo maior, uma expresso. O importante compreender bem cada um individualmente, e depois apenas llos em seqncia.
1.1) O circunflexo ^ O circunflexo "^" (ou chapuzinho) um metacaractere de posicionamento. Simboliza o incio de uma linha.
1.2) O cifro $ O cifro "$" um metacaractere de posicionamento, que representa o fim de uma linha.
1.3) A lista [ ]: Um dos elementos do conjunto Pares delimitadores, devem ocorrer de forma balanceada.
Expresso Regular: [rgp]ato // Qualquer palavra com a primeira letra sendo ou 'r' ou 'g' ou 'p', e as letras seguintes sendo "ato"
String comparada: rato String vlida: sim
String comparada: gato String vlida: sim
String comparada: pato String vlida: sim
String comparada: xato String vlida: no
1.4) O ponto . Qualquer caractere s vezes, necessrio permitir "qualquer" caractere numa certa posio. Por exemplo, para procurar usurios onde a segunda letra do login seja uma vogal, como "mario", e "jose", mas no "ana". No importa qual a primeira letra, pode ser qualquer uma, mas a segunda deve ser uma vogal. O ponto o metacaractere que significa "qualquer letra". E mais, na verdade ele significa "qualquer caractere", pois alm de letras ele pode representar um nmero, um smbolo, um TAB, enfim: qualquer caractere.
Expresso Regular: JavaFre.
String comparada: JavaFree String vlida: sim
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 3 de 17
1.5) As chaves { } Pares delimitadores, devem ocorrer de forma balanceada. Colocando um nmero entre chaves "{ }", indicase uma quantidade de repeties do caractere (ou metacaractere) anterior:
.{27} igual a 27 pontos!
Essa expresso faz o mesmo que a anterior: procura por linhas que tenham 27 caracteres, quaisquer que sejam eles. A vantagem que basta olhar o nmero de repeties, no precisa ficar contando os pontinhos.
1.6) O curinga .* (Asterisco) Qualquer cadeia de caractere. um elemento quantificador. Quando se procura por dois trechos especficos numa mesma linha, no importando o que h entre eles, usase o curinga ".* " para significar "qualquer coisa".
Expresso Regular: J*Free // Qualquer coisa que comece com J e termine com Free
String comparada: JavaFree String vlida: sim
String comparada: JavaPago String vlida: no
1.7) O ou | (OR) Para fazer o OR lgico, onde se procura por uma coisa ou outra, devese usar o pipe " | " e delimitar as opes com os parnteses "( )":
$ egrep '^(ana|carlos|acs):' /etc/passwd
Essa ER casa apenas as linhas dos trs usurios citados. Ela comea procurando no incio da linha "^", depois procura ou a palavra "ana", ou a palavra "carlos", ou a palavra "acs", seguido pelo doispontos.
1.8) Os outros repetidores: ? * + Outros metacaracteres que podem ser usados so o asterisco, o mais e a interrogao (chamado opcional). Eles definem quantidades e funcionam como as chaves, porm com uma sintaxe mais prtica:
Meta Nome Equivalente Descrio ? opcional {0,1} Pode aparecer ou no (opcional) * asterisco {0,} Pode aparecer em qualquer quantidade + mais {1,} Deve aparecer no mnimo uma vez
1.8.a)? (Sinal de interrogao): Uma ou nenhuma vez, assim como '*', '?' um elemento quantificador.
Expresso regular: a? // Uma ou nenhuma ocorrncia de 'a'
String comparada:
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 4 de 17
String vlida: sim
String comparada: a String vlida: sim
1.8.b) + (Sinal de adio) : Uma ou mais vezes, assim como '*' e '?', um elemento [i]quantificador[i].
Expresso regular: a+ // Uma ou mais ocorrncias de 'a'
String comparada: String vlida: no
String comparada: aaa String vlida: sim
1.9) Mais detalhes para ver nas listas!
1.9.a) A lista negada [ ^ ]
Expresso Regular: [^rgp]ato // Qualquer palavra cuja primeira letra NO 'r' nem 'g' nem 'p', sendo "ato" o resto da palavra
String comparada: rato String vlida: no
String comparada: xato String vlida: sim
1.9.b) O intervalo em listas [ ] Outra facilidade da lista a possibilidade de se indicar intervalos, faixas. Basta colocar um hfen entre duas letras que ele ser expandido para todas as letras existentes no intervalo.
Por exemplo "af" interpretado como "todas as letras entre a e f, inclusive", ou seja "abcdef".
Expresso Regular: [H-L]avaFree // A primeira letra da palavra deve est entre H e L (inclusive H e L)
String comparada: JavaFree String vlida: sim
String comparada: RavaFree String vlida: no
1.10) \ (Barra invertida) : Classe de caracteres pr-definidos. So eles:
1. \d : Um dgito, 2. \D : Algo que no seja um dgito, 3. \s : Um espao em branco, 4. \S : Algo que no seja um espao em branco,
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 5 de 17
5. \w : Qualquer letra, dgito ou underscore ( _ ) 6. \W : Algo que no seja letra, dgito ou underscore
Exerccios: Desenvolva expresses regulares que gerem as seguintes linguagens sobre = {a, b}:
a) {w | w tem no mximo um par de a como subpalavra e no mximo um par de b como subpalavra.
b) {w | qualquer par de a antecede qualquer par de b}
c) {w | w no possui aba como subpalavra}
Alguns exemplos
TIPO EXPRESSAO REGULAR EXEMPLO
Data (dd/mm/aaaa)
^([0-9]|[0,1,2][0-9]|3[0,1])/([\d]|1[0,1,2])/\d{4}$ 21/12/2007 Numero Decimal ^\d*[0-9](\.\d*[0-9])?$ 234.342 Arquivos Documentos
^[a-zA-Z0-9-_\.]+\.(pdf|txt|doc|csv)$ world-domination.pdf E-mail
^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$
Codigo Cor HTML ^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$ #00ccff Arquivo de Imagem
^[a-zA-Z0-9-_\.]+\.(jpg|gif|png)$ new-pic_company.jpg
Endereco IP ^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$
192.168.0.1
Arquivos Multimedia
^[a-zA-Z0-9-_\.]+\.(swf|mov|wma|mpg|mp3|wav)$ company-presentation.swf
Data Formato Mysql
^\d{4}-(0[0-9]|1[0,1,2])-([0,1,2][0-9]|3[0,1])$ 2005-09-02 Telefone (US)
^[2-9]\d{2}-\d{3}-\d{4}$ 250-555-4542
Codigo Postal (EUA)
^([A-Z][0-9]){3}$
V2B2S3
Hora (HH:MM)
^([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}$ 12:29 URL ^(http[s]?://|ftp://)?(www\.)?[a-zA-Z0-9-
\.]+\.(com|org|net|mil|edu|ca|co.uk|com.au|gov|br)$
http://www.google.com
Telefone Internacional
^(([0-9]{1})*[- .(]*([0-9a-zA-Z]{3})*[- .)]*[0-9a-zA-Z]{3}[- .]*[0-9a-zA-Z]{4})+$
1.245.532.3422
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 6 de 17
Exemplo ER-01
(19|20)\d\d([- /.])(0[1-9]|1[012])\2([012][0-9]|3[01])
1. ( 19 | 20 ) um grupo que casa "OU dezenove OU vinte"; 2. \d representa um dgito "0 a 9"; 3. ( [- /.] ) um grupo que casa "hfen", "espao", "barra" ou "ponto"; 4. ( 0 [1-9] | 1 [ 012 ] ) um grupo quer dizer que ele casar "zero" seguido de "um at nove" OU "um"
seguido de "zero", "um" ou "dois"; 5. \2 significa que ele re-utiliza o segundo grupo da ER ( [- /.] ); 6. ( [ 012 ] [ 0-9 ] | 3 [ 01 ] ) um grupo que casa "zero", "um" ou "dois" seguido de um dos dgitos OU
"trs" seguido de "zero" ou "um";
Ou seja, temos uma ER que casaria as datas dentro deste texto:
1954-10-01 Joo Alberto
1976-07-25 Maria Eduarda
1966-10-22 Carlos Silva
Exemplo ER-02
\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z
Temos nela:
1. \A que indica o comeo da cadeia de caracteres; 2. ( [ ^@\s ] + ) um gupo que casa qualquer caractere menos "arroba" e "espao", ocorrendo 1 ou
+ vezes;
3. @ casa "arroba"; 4. ?: quer dizer que esse grupo no pode ser re-utilizado; 5. [ - a-z 0-9 ]+ \. diz que podem conter "trao", alfabeto em caixa baixa e dgito uma ou mais vezes
seguido de "ponto"; 6. + (guloso) diz que esta sequncia deve acontecer uma ou mais vezes; 7. [ a-z ] {2, } diz que deve conter 2 ou mais letras do alfabeto em caixa baixa; 8. \Z indica o fim da cadeia de caracteres;
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 7 de 17
Essa ER seria uma das possveis para localizar um endereo de email dentro de um texto. Por exemplo:
Perfil
Nome: Americo Vespucio
Endereo: Rua A, Quadra B, Lote 3, Casa 4
E-mail: [email protected]
Website: www.testecompanhia.com.br
Tabela ASCII Completa (http://www.spectrum.eti.br/news/tabela_ascii_completa)
A Tabela ASCII (American Standard Code for Information Interchange) no nenhuma novidade para quem j trabalha com informtica, principalmente com desenvolvimento de software. A minha inteno em publicar esta tabela adicionar vrias informaes em uma nica tabela, j que a maioria disponvel na internet apresenta poucos dados.
Esta tabela a juno da tabela ASCII Normal (32 a 127), tabela dos Caracteres de Controle (0 a 31) e a tabela ASCII Estendida (128 a 255).
Decimal Binrio Hex Referncia
0 00000000 00 Null - NUL
1 00000001 01 Start of Heading - SOH
2 00000010 02 Start of Text - STX
3 00000011 03 End of Text - ETX
4 00000100 04 End of Transmission - EOT
5 00000101 05 Enquiry - ENQ
6 00000110 06 Acknowledge - ACK
7 00000111 07 Bell, rings terminal bell - BEL
8 00001000 08 BackSpace - BS
9 00001001 09 Horizontal Tab - HT
10 00001010 0A Line Feed - LF
11 00001011 0B Vertical Tab - VT
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 8 de 17
12 00001100 0C Form Feed - FF
13 00001101 0D Enter - CR
14 00001110 0E Shift-Out - SO
15 00001111 0F Shift-In - SI
16 00010000 10 Data Link Escape - DLE
17 00010001 11 Device Control 1 - D1
18 00010010 12 Device Control 2 - D2
19 00010011 13 Device Control 3 - D3
20 00010100 14 Device Control 4 - D4
21 00010101 15 Negative Acknowledge - NAK
22 00010110 16 Synchronous idle - SYN
23 00010111 17 End Transmission Block - ETB
24 00011000 18 Cancel line - CAN
25 00011001 19 End of Medium - EM
26 00011010 1A Substitute - SUB
27 00011011 1B Escape - ESC
28 00011100 1C File Separator - FS
29 00011101 1D Group Separator - GS
30 00011110 1E Record Separator - RS
31 00011111 1F Unit Separator - US
32 00100000 20 Space - SPC
33 00100001 21 !
34 00100010 22 "
35 00100011 23 #
36 00100100 24 $ 37 00100101 25 %
38 00100110 26 &
39 00100111 27 '
40 00101000 28 ( 41 00101001 29 ) 42 00101010 2A *
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 9 de 17
43 00101011 2B +
44 00101100 2C ,
45 00101101 2D -
46 00101110 2E .
47 00101111 2F /
48 00110000 30 0
49 00110001 31 1
50 00110010 32 2
51 00110011 33 3
52 00110100 34 4
53 00110101 35 5
54 00110110 36 6
55 00110111 37 7
56 00111000 38 8
57 00111001 39 9
58 00111010 3A :
59 00111011 3B ;
60 00111100 3C <
61 00111101 3D =
62 00111110 3E >
63 00111111 3F ?
64 01000000 40 @
65 01000001 41 A
66 01000010 42 B
67 01000011 43 C
68 01000100 44 D
69 01000101 45 E
70 01000110 46 F
71 01000111 47 G
72 01001000 48 H
73 01001001 49 I
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 10 de 17
74 01001010 4A J
75 01001011 4B K
76 01001100 4C L
77 01001101 4D M
78 01001110 4E N
79 01001111 4F O
80 01010000 50 P
81 01010001 51 Q
82 01010010 52 R
83 01010011 53 S
84 01010100 54 T
85 01010101 55 U
86 01010110 56 V
87 01010111 57 W
88 01011000 58 X
89 01011001 59 Y
90 01011010 5A Z
91 01011011 5B [ 92 01011100 5C \
93 01011101 5D ] 94 01011110 5E ^
95 01011111 5F _
96 01100000 60 `
97 01100001 61 a
98 01100010 62 b
99 01100011 63 c
100 01100100 64 d
101 01100101 65 e
102 01100110 66 f
103 01100111 67 g
104 01101000 68 h
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 11 de 17
105 01101001 69 i
106 01101010 6A j 107 01101011 6B k
108 01101100 6C l
109 01101101 6D m
110 01101110 6E n
111 01101111 6F o
112 01110000 70 p
113 01110001 71 q
114 01110010 72 r
115 01110011 73 s
116 01110100 74 t
117 01110101 75 u
118 01110110 76 v
119 01110111 77 w
120 01111000 78 x
121 01111001 79 y
122 01111010 7A z
123 01111011 7B { 124 01111100 7C | 125 01111101 7D } 126 01111110 7E ~
127 01111111 7F Delete
128 10000000 80 129 10000001 81
130 10000010 82
131 10000011 83
132 10000100 84
133 10000101 85
134 10000110 86
135 10000111 87
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 12 de 17
136 10001000 88
137 10001001 89
138 10001010 8A
139 10001011 8B
140 10001100 8C
141 10001101 8D
142 10001110 8E 143 10001111 8F 144 10010000 90 145 10010001 91
146 10010010 92
147 10010011 93
148 10010100 94
149 10010101 95
150 10010110 96
151 10010111 97
152 10011000 98 153 10011001 99 154 10011010 9A 155 10011011 9B
156 10011100 9C
157 10011101 9D
158 10011110 9E
159 10011111 9F 160 10100000 A0
161 10100001 A1
162 10100010 A2
163 10100011 A3
164 10100100 A4
165 10100101 A5 166 10100110 A6
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 13 de 17
167 10100111 A7
168 10101000 A8
169 10101001 A9
170 10101010 AA
171 10101011 AB
172 10101100 AC
173 10101101 AD
174 10101110 AE
175 10101111 AF
176 10110000 B0
177 10110001 B1
178 10110010 B2
179 10110011 B3
180 10110100 B4
181 10110101 B5 182 10110110 B6 183 10110111 B7 184 10111000 B8
185 10111001 B9
186 10111010 BA
187 10111011 BB
188 10111100 BC
189 10111101 BD
190 10111110 BE
191 10111111 BF
192 11000000 C0
193 11000001 C1
194 11000010 C2
195 11000011 C3
196 11000100 C4
197 11000101 C5
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 14 de 17
198 11000110 C6
199 11000111 C7 200 11001000 C8
201 11001001 C9
202 11001010 CA
203 11001011 CB
204 11001100 CC
205 11001101 CD
206 11001110 CE
207 11001111 CF
208 11010000 D0
209 11010001 D1
210 11010010 D2 211 11010011 D3 212 11010100 D4 213 11010101 D5
214 11010110 D6 215 11010111 D7 216 11011000 D8 217 11011001 D9
218 11011010 DA
219 11011011 DB
220 11011100 DC
221 11011101 DD 222 11011110 DE 223 11011111 DF
224 11100000 E0 225 11100001 E1
226 11100010 E2 227 11100011 E3 228 11100100 E4
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 15 de 17
229 11100101 E5 230 11100110 E6
231 11100111 E7 232 11101000 E8
233 11101001 E9 234 11101010 EA 235 11101011 EB 236 11101100 EC 237 11101101 ED 238 11101110 EE
239 11101111 EF
240 11110000 F0
241 11110001 F1
242 11110010 F2
243 11110011 F3
244 11110100 F4 245 11110101 F5 246 11110110 F6
247 11110111 F7
248 11111000 F8
249 11111001 F9
250 11111010 FA
251 11111011 FB
252 11111100 FC
253 11111101 FD
254 11111110 FE
255 11111111 FF
Na dvida, basta consultar essa tabela para ver quais so os caracteres de determinado intervalo. Por exemplo, o intervalo "[ : @ ]" engloba os caracteres : ; < = > ? @.
Na tabela, tambm podemos ver que o intervalo "a z" no inclui os caracteres acentuados! Para procurar por letras minsculas num texto em portugus, devese fazer "[a z]".
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 16 de 17
Tabela dos metacaracteres (http://wiki.cercomp.ufg.br/Equipe_Web/RoR/Express%C3%A3o_Regular)
Tabela de classes de caracteres
(http://wiki.cercomp.ufg.br/Equipe_Web/RoR/Express%C3%A3o_Regular)
O que O que faz Exemplo (Busca) Resultado
. (ponto) Curinga (todos caracteres) .ato
aato, Bato, -ato, ?ato, _ato, ...
[ ] (abre-fecha colchetes) Lista (s os chars dentro dele) [fgpr]ato fato, gato, pato, rato - (trao)
Escopo (De - at) [A-Z] A, B, C, D, E, F, G, H, ...
^ (circumflexo) Negao (no-alguma-coisa) Incio da linha (comea com ...)
[^fg]ato ^[CFT]aa
(sem "f" nem "g") pato, rato "Caa ...", "Faa ...", "Taa ..."
? (interrogao) Opcional (0 ou 1 alguma-coisa) pr?ato pato, prato
* (asterisco) Qualquer (0, 1 ou infinitas vezes) go*l gl, gol, gool, gooooooooool
+ (mais) Existente (1 ou mais vezes) cor+ta corta, corrta, corrrrrrrrrrta
{ } (abre-fecha chaves) Escopo de repeties ol{2,5} oll, olll, ollll, olllll
$ (cifro) Final da linha (termina com ...) hoje$ "... fui hoje", "... s hoje"
\b (barra invertida + B) Borda da palavra \bclara\b palavra exata "clara" (not
claras) \ (barra invertida) Escape (para chars
especiais) \. , \[ , \] , \^ , \? , \* , \+ , ...
os metacaracteres especiais
| (pipeline) Ou foca | toca foca ou toca ( ) (abre-fecha parntesis)
Grupo (conjunto de caracteres) ((su|hi)per)?co co, superco, hiperco
\[1-9] (barra invertida + 1 at 9)
Retrovisor (reusa um grupo) (tico)-\1 | (teco)-\2\1 tico-tico ou teco-tecotico
-
INTRODUO A EXPRESSES REGULARES Intro-exp-regulares.doc
Pgina 17 de 17
Para saber mais
H programas para auxiliar o aprendizado de Expresses Regulares. O txt2regex (http://txt2regex.sourceforge.net) um programa modo texto que constri ERs apenas mostrando menus (em portugus) ao usurio, que escolhe o que quer.
J para a interface grfica, tem o Regex Coach (http://www.weitz.de/regexcoach/), com verses para Linux e Windows.
Para aprofundarse no assunto, leia o livro "Expresses Regulares", disponvel online em http://aurelio.net/er. A lista de discusso sedbr um lugar onde dvidas podem ser tiradas: http://br.groups.yahoo.com/group/sedbr.
http://aurelio.net/er/apostila-conhecendo-regex.pdf
http://www.memelo.org/tmp/docs/perl/guia-er.sourceforge.net/guia-er-8.html
Qual? O que casa? Generalizando Exemplos
[:alnum:] Caracteres alfanumricos [0-9a-zA-Z] Conheci; 800mil; opAAaa [:alpha:] Caracteres alfabticos [A-Za-z] RorRocks [:blank:] Espao e tabulao [ \t] " " [:cntrl:] Caracteres de controle [\x00-\x1F\x7F] No me pergunte ... [:digit:] ou \d Dgitos [0-9] 4; 8; 15; 16 ;23 ;42 ... [:graph:] Caracteres visveis [\x21-\x7E] Tb no tenho nem idia [:lower:] Caracteres em caixa baixa [a-z] abcdef ... [:print:] Caracteres visveis e espaos [\x20-\x7E] comeando a fazer sentido [:punct:] Caracteres de pontuao [^\w\s] :); =(; [:space:] ou \s Caracteres de espaos em branco [ \t \r \n \v \f] "espao"; "return";
"quebra"; [:upper:] Caracteres em caixa alta [A-Z] ABCDEF... [:xdigit:] Dgitos hexadecimais [A-Fa-f0-9] FaCaAf14dA; 0033CC; \S Tudo menos espaos em branco [^[:space:]] aZ1.,']);!@$/ \w Letras, dgitos e ' ' [a-zA-Z0-9 ] aB10 as; \W Contrrio de \w [^\w] @./;*&