Expressões Regulares.pdf

17

Click here to load reader

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})+$

    [email protected]

    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] @./;*&