Em terra de metacaractere, quem tem um asterisco é rei

17/05/2008 - 17:53 PM - 36 pessoas não foram à escola.

Em terra de metacaractere quem tem um asterisco é rei

Não entendi absolutamente NADA!
Calma! Eu lembrei de você, e preparei esse mini-tutorial para você aprender hoje mesmo como criar expressões regulares simples! Prepare-se para avançar mais um grau na escala da nerdisse!

Expressões regulares? Isso é algum tipo de regra de português? Eu detestava aquelas aulas…
Não, não… é algo bem mais complexo e… divertido. Vamos imaginar a seguinte situação: você trabalha numa empresa de desenvolvimento de software como programador (claro, afinal, esse exemplo seria inviável se você fosse o faxineiro) e seu chefe pediu para o Vagabond Controlator Plus, o software que você está desenvolvendo, ser capaz de ler arquivos de texto com registros dos acessos dos funcionários ao sistema de ponto da empresa, estruturado dessa forma:

12:45 Tinkie Winkie
13:50 Dipsie Silva
14:30 Lala Tasty Cream
14:50 Po McCartney
20:20 Bozo The Clown

Sua missão, bravo guerreiro, é descobrir quais funcionários estão chegando atrasados na empresa (depois das 14h). Como você faria isso?

Ah, é fácil! Basta ler o arquivo, gerar uma string para cada linha, separar a parte da hora e converter para número, aí verifica se…
Pára! Trabalho demais para pouca coisa. As ER (expressões regulares) existem para te ajudar. Com elas podemos buscar e substituir informações em um texto, de forma rápida e fácil. Para o exemplo acima, uma das possíveis expressões pode ser simplesmente:

^(1[4-9]|2[0-3]):[0-5]\d.*$

Minha nossa, o que é ISSO!?
Calma! Não entre em pânico! Depois de algum estudo, essa monstruosidade acima pode ser facilmente compreendida. Como o assunto é muito extenso, vou explicar apenas os conceitos abordados no quadrinho. Dica: use o RegexPal para testar as expressões, inclusive o exemplo acima. Lembre de marcar a caixinha ““.

1 - O ponto
O ponto casa com qualquer coisa. Ex:

Expressão:  m.t.
Texto:        Ele entrou no mato com a moto

A expressão significa: ache palavras que comecem com m, tenham um caractere qualquer na segunda posição, um t, e termine com um caractere qualquer. Assim, ele encontra as palavras mato e moto. Agora dê um pulinho no RegexPal e faça o teste. Legal, não? :)

2 - O metacaractere guloso
Quando um ponto se junta a um asterisco, ele fica malvado e vira o curinga (não é aquele do Batman), um ser maligno devorador de mundos, caracteres e criancinhas. O asterisco ao lado dele significa: “ache zero ou mais caracteres quaisquer”.

Expressão: a.*i
Texto:       aaaaaaai! Meu pé, seu idiota!

No exemplo acima, o esperado seria que a expressão casasse com “aaaaaaai“, mas ele casou até a última letra “i” da frase, porque o .* é ganancioso e não mede esforços para conseguir aquilo que deseja. Ele devora tudo que vê pela frente. Isso é útil em alguns casos, mas não se deve exagerar, caso contrário a ER poderá casar com caracteres indesejáveis.

Nota: Os metacaracteres são caracteres especiais que servem para montar nossas expressões. Exemplos:  (., *, +, ?, [], (), {}… ).

3 - Entrando na lista dos procurados
Com a lista podemos determinar quais caracteres estamos procurando numa determinada posição. A lista é um conjunto de caracteres entre colchetes. Ex:

Expressão: [mprg]ato
Texto:       o gato pegou o rato, que mordeu o pato, que entrou no mato

Traduzindo: procure palavras que comecem com “m”, “p”, “r” ou “g” e terminem com “ato”. Se colocarmos o coringa dentro de uma lista, o que acontece? Como Aurélio diz em seu livrinho de expressões regulares, “dentro da lista, todo mundo é normal”. Ex:

Expressão: [.*]
Texto:       Olá. Sua senha é ****.

O curinga perde seus poderes de devorador de mundos e torna-se uma expressão “ache um ponto ou um asterisco”, e casa apenas com os pontos e asteriscos do texto. Vira um caractere normal, sem poderes e tendo que pegar ônibus para trabalhar.

4 - Grupo de apoio
Tal como em expressões matemáticas, servem para simplificar e organizar a ER, além de outras vantagens: Ex:

Expressão: (casa|testa)mento
Texto:       Vovô fará seu testamento após o casamento de Annie

A ER procura por palavras que começam com “casa” ou “testa” e terminam com “mento”. Note a barrinha |. Ela significa OU. Ou uma coisa ou outra. Se você tirar os parênteses, a expressão passará a significar: ache a palavra “casa” ou a palavra “testamento”. Teste isso no RegexPal. ;)

5 - A recuperação
Depois de ganhar um pouco de bom-senso, nosso metacaractere deixa de ser guloso e passa a ser altruísta. No grupo de apoio, instruíram ele a sempre andar com um sinal de interrogação, o que o torna menos capitalista, e casa apenas o necessário. Vamos voltar ao exemplo 2:

Expressão: a.*?i
Texto:       aaaaaaai! Meu pé, seu idiota!

Agora sim! Com um sinal de interrogação no final, ele vai parar de casar caracteres até encontrar o primeiro “i”. Pronto! O mundo está livre de mais um louco facínora.

6 - E todos foram felizes para sempre
E para que isso aconteça, você precisa ir além. Minhas sugestões:

Definição na Wikipédia
aurelio.net (Este post foi inspirado no livrinho do Aurélio. Compre! ;) )
regexpal.org (para testar)
regular-expressions.info
Como criar expressões regulares em Python
Cheat Sheet de regex (guia rápido)

Espero que esse pequeno tutorial seja útil. Aguardem mais tutoriais!

36 pessoas não foram à escola.

De volta e lá novamente

11/05/2008 - 18:01 PM - 31 pessoas não foram à escola.

Untranslatable jokes

Aloha, nerds! o/

Finalmente, hein? Eu já estava removendo o feed do Google Reader…
Pois é, atrasou tudo aqui…mas calma, eu posso explicar! Numa fatídica, nebulosa e triste tarde de Abril, depois de dar seu último suspiro após uma palestra sobre o Inkscape no FLISOL, meu amado, querido e companheiro das madrugadas, o senhor notebook, morreu. Isso, para um nerd, é uma perda lastimável. Assim, perdi completamente a vontade de atualizar o blog. Mas em breve eu ganharia um grande estímulo, no…

ENSOL 2.0
Evento que aconteceu em João Pessoa, Paraíba. Nunca me diverti tanto num evento. As pessoas que estavam no ENSOL, claro, foram as responsáveis por isso. Começando pelo nerd surfista Lucas Allan, que me recebeu muito bem em sua casa e prometeu me ensinar a surfar (mas não deu, deixa pra próxima), meu divertido amigo “tirador de onda” Anahuac, que anunciou o KyaPanel (e me pediu para propor um logotipo), o Paulino Michelazzo, que se revelou um grande fã do Bozo e estava sempre perguntando se o Nerdson vai ao bar, a Celinha, pernambucana, que conhecia apenas pelo Orkut (olha a socialização aêê, gente!), Júlio Neves, Alessandro Silva, Sulamita Garcia, Rodrigo Pádula, Erick Henrique e muitos outros (não desconsiderando nenhum), e por último e tão importante quanto os outros, Jon Maddog Hall, que após conhecer o Nerdson, pediu que eu nunca parasse de desenhá-lo. Esse foi um grande estímulo. Então, mesmo que ocorram esses atrasos monstruosos, não vou parar, a não ser que eu perca a mão ou a visão, ou coisa do tipo. :)

Mas claro, não fui lá apenas para me divertir. Tudo ocorreu bem na palestra sobre o Inkscape, que apresentei com o notebook emprestado do Gedvan Dias (muito obrigado), exceto pelo fato de terem pedido para desenhar o Nerdson do zero, o que foi uma terrível catástrofe =P (é, eu não desenho ele sempre do zero, já tenho pronto e modifico algumas partes).

Pode parecer irônico, mas durante o FISL, que É o evento mais divertido, eu estava trabalhando, então não deu pra ver quase nenhuma palestra nem curtir muito os agitos, logo não foi tão divertido assim =D. Já no ENSOL, eu estava apenas participando, e pude perceber o quão bem organizado ele foi, sem problemas graves ou estresses ocasionais. A festa no final do evento, no centro histórico de João Pessoa, foi MUITO legal. Poucas pessoas e boa música. Foi diversão garantida. Os organizadores estão de parabéns!

De volta e lá novamente?
É, não sei quando vou poder postar novamente. Estou atualmente com dois trabalhos e uma faculdade para me ocupar, além do meu querido blog, que infelizmente, acaba ficando com baixa prioridade. Mas, o próximo post, ao que tudo indica, será a continuação da série O Ataque dos Bots Assassinos, que sofreu um terrível delay devido a uma greve dos roteiristas e um ataque terrorista à sede da Creatives S.A., aqui na minha central nervosa de processamento. No mais, acompanhem o twitter, que atualizo com uma frequência beeeeem maior :) .

Mantenham os cintos fechados até o próximo post. Sabemos que a escolha do blog é uma livre decisão do leitor. Agradecemos a preferência.

31 pessoas não foram à escola.

fisl9.closed()

23/04/2008 - 20:13 PM - 30 pessoas não foram à escola.

Espólios

from events import FISL
fisl9 = FISL(9.0, “PUCRS”)
fisl9.run(7417)
fisl9.get_feedback()
fisl9.closed(”E aqui se encerra a série do fisl9.0. Obrigado a todos pelas visitas e comentários!”)

30 pessoas não foram à escola.

Pages: Prev 1 2 3 4 5 6 7 8 ...43 44 45 Next