Já faz 10 anos que uso Expressões Regulares

Comemoração de 10 anos do meu site AURELIO.NET
Parte 4

  1. 10 anos de sáite
  2. 10anos: Vim
  3. 10anos: Sed
  4. 10anos: Expressões Regulares

————— ∞ —————

Voltemos uma década, ao ano de 1999. Fui ver o filme Matrix no cinema (a câmera girava mesmo cara!!!) e o bug do milênio seria o fim do mundo, o Apocalipse Nerd.

Pra garantir, imprimi o extrato da conta bancária no dia 31 de dezembro. Sabe como é, vai que… :)

Mas 1999 marcou minha vida mesmo por causa de uma outra coisinha que acabou cruzando o meu caminho: Expressões Regulares. Nosso encontro foi acidental. Eu não queria saber delas, aliás, eu nem sabia que elas existiam. Naquela época o que eu queria mesmo era aprender Sed, o comando mágico do UNIX. Mas isso você já leu no texto anterior, né?

Era isso, meu único objetivo era aprender Sed. Só. Mais nada. Ele já era difícil o suficiente para me manter ocupado por semanas. Mas quando fui estudar o tal Sed FAQ, ali no meio tinha uns aliens tipo ^(.*): e [0-9]{1,3}. Que isso?

— Aurélio, estas são as Expressões Regulares!
— Ãn?
— Esses aliens que você viu, são metacaracteres que compõem expressões regulares.
— Quem tá falando?
— Faz diferença?
— Mmmm… Não.
— Então?
— Tá, fala.
— Você não quer aprender Sed?
— Quero.
— Você não quer DOMINAR o Sed?
— Quero! Quero! Quero!
— Então primeiro vai ter que dominar essas expressões feiosas.
— Sério?
— Sério.
— F*deu.

Fiquei arrasado com esta revelação. Não podia ser verdade. Tentei comovê-lo:

— Mas eu só queria aprender o Sed!
— Sim.
— E essas expressões são muito mais difíceis!
— Sim!

Pô, foi uma ducha de água fria. Uma ducha não, foi um banho de cachoeira no inverno às 6 da manhã.

— Mas… Mas é que….
— Sem choro. Aprenda ou desista de uma vez.
— Desistir? Retroceder nunca, render-se jamais!

espacato

Confesso que no começo eu não gostei das expressões. Achei tudo muito obscuro, mal explicado e feio. Parecia uma grande gambiarra que no final funcionava por mágica.

Já de início foi uma confusão tremenda com os curingas da linha de comando. Eu sabia que *.txt expandia para todos os arquivos com a extensão txt, mas o asterisco em Expressões Regulares era diferente, ele sozinho não fazia nada. Ah, e o ponto também era especial. Então o similar nessa nova linguagem era .*\.txt$. Feio.

Na lista de discussão gringa do Sed, também apareciam muitas dúvidas sobre as expressões, e aos poucos fui acompanhando e entendendo um pedacinho aqui, outro ali. Sempre testava os exemplos na minha máquina, tentava fazer variações, tirava um caractere aqui, colocava outro ali e via no que dava. É triste aprender assim, sem um texto que te leve pela mão do início ao fim em uma sequência lógica, mas eu não tinha outra escolha.

Tentei compensar esse trauma no livro do piazinho :)

Mas devagar e sempre, como geralmente são as coisas para mim, fui aprendendo.

Não sei dizer quanto tempo demorou para eu conseguir fazer minhas próprias expressões, mas aquela aversão inicial transformou-se em curiosidade, depois em empolgação e finalmente em paixão. Quanto mais eu aprendia, mais tinha vontade de aprender. Eu pensava em metacaracteres o dia todo!

.oO( Qual a expressão para casar o nome de todas as pessoas deste ônibus? )

.oO( E a expressão para casar as notas do refrão de Cretin Hop? )

.oO( E a que casa o desenho das calçadas “petit pavet” de Curitiba? )

— Aurélio! Menos.
— Ops. Tá.

————— ∞ —————

Bem, mais uma vez, eu queria compartilhar aquilo que tinha aprendido, então criei uma área especial para as expressões regulares no meu site para juntar dicas e links. Dessa vez não vou deixar para o final, afinal, você já sabe: em comemoração aos 10 anos do site, essa área acabou de ser reformada! \o/ Confira.

Mas voltando à história, no ano seguinte (2000), a Conectiva, empresa em que eu trabalhava, lançou a primeira revista nacional sobre Linux, a Revista do Linux. Os funcionários foram convidados a contribuir com artigos. Eu gostei da ideia e me apressei para escrever sobre o que eu sabia. Na terceira edição da revista apareceram dois artigos meus, um sobre o modo texto e outro sobre as então misteriosas… (rufam os tambores) …expressões regulares! (Óooooh)

Relendo o texto do primeiro artigo agora, é engraçado perceber como ele é confuso, bagunçado. Mas teve um parágrafo em especial que foi o campeão: não entendi nada. Misturei ignorecase com curinga e ficou sem pé nem cabeça:

Alguns editores, com uma busca um pouco mais esperta, permitem a procura ignorando a diferença entre letras maiúsculas e minúsculas, através do uso de um curinga, geralmente o asterisco (*), que significa “qualquer coisa”. Este também funciona na linha de comando, pois quando você faz um ls *.txt, está listando “todos os arquivos com a extensão .txt”.

Depois saiu a segunda parte deste artigo. Esse já ficou melhor, pois não está tão confuso. Curioso é perceber que nesta época eu ainda não tinha achado nomes legais para alguns metacaracteres. O “ou” eu chamava de “alternância” e o “retrovisor” era o horrível “referência retroativa”, uma tentativa de tradução de “backreference”. Coisas da vida…

Foi em 2000 também que resolvi meter o pé na jaca de vez e ler o desafiador Mastering Regular Expressions. Um livro enorme, denso, completo, (posso dizer “chato” sem parecer que é invejinha?), que esmiuça cada detalhe de cada tipo de implementação das expressões regulares. É a obra-prima sobre o assunto. Mas infelizmente, em inglês.

A Conectiva comprou o livro e eu dedicava parte de meu horário de trabalho para lê-lo e (tentar) entendê-lo. Isso sim é investir no funcionário. Bons tempos aqueles…

Apanhei, mas consegui ler o tijolão. Com meu inglês tosco e falta de conhecimento sobre alguns assuntos, devo ter entendido no máximo uns 75% do livro. Mas foi o suficiente para me mostrar todo o poder que essas expressões têm. Foi um caminho sem volta, eu já não era mais um mero usuário, agora eu sentia que dominava as benditas regex.

Para praticar o conhecimento novo, escrevi o programa txt2regex, um assistente que te ajuda a compor uma expressão regular. Ele vai fazendo perguntas, você responde e plim! Lá está sua expressão, pronta para usar. Ele fez sucesso durante alguns anos, foi incluído em distribuições de Linux, apareceu em revistas gringas (França, Japão, Alemanha) e era bem quisto pelos usuários. Depois não atualizei mais e ele foi sendo esquecido gradativamente… Snif.

Lembro que foi um grande desafio na época escrever esse programa, pois eu encasquetei de só usar os comandos internos (builtin) do Bash. Mas isso fica para um futuro texto sobre shell :)

txt2regex em ação

Com os artigos na Revista do Linux e o txt2regex, eu já era conhecido como “o cara das regex” lá na Conectiva e em alguns círculos nerds. Mas o assunto ainda era um nobre desconhecido para a grande maioria dos usuários. Uma lástima, pois eu sabia todo o poder que as expressões tinham, queria divulgar mais isso.

————— ∞ —————

Numa manhã qualquer de 2001, eu estava conversando com meu chefe (Wanderlei Cavassin) sobre algo relacionado às expressões. Não lembro se ele estava com uma dúvida ou se queria mostrar algo que tinha encontrado. Só lembro que em determinado ponto, do nada, ele dispara:

— Verde, já que você manja disso, por que não escreve um livro?
— Hein?

Fui pego de surpresa. Nunca tinha pensado nessa hipótese. Para mim, escrever livros técnicos era coisa de gente grande, de professor universitário com barba grande e cabelos brancos. Eu com meus 23 aninhos era apenas um girino.

Mas ele disse que a editora Novatec, aquela que fazia uns livros fininhos (Guias de Consulta Rápida), estava procurando autores. Então ele me incentivou a mandar um email para a editora. Vai que…

Desacreditado, mandei o email. Achei que não ia dar em nada, afinal, eu não tinha cabelos brancos, além de que eu achava que eram as editoras que iam atrás dos autores, e não o contrário. No email eu perguntei se eles… Péra! Será que… (vasculha, vasculha, vasculha)

ACHEI! \o/

----------------------------8<-----------------------------
De: verde@conectiva.com.br
Assunto: autor para guias de sed e expressões regulares
Data: 12 de abril de 2001 11h45min22s GMT-03:00
Para: novo@novateceditora.com.br

oi,

estava olhando a página de vocês e vi que estão
procurando autores de guias de consulta rápida para
vários temas técnicos.

se tiverem interesse em publicar algo sobre sed e/ou
expressões regulares, me candidato.

já tenho documentos, textos e programas publicados
caso tenham interesse:

sed-HOWTO

http://conectiva.com.br/~aurelio/sed/sed-HOWTO

txt2sgml.sed – script em sed que converte texto puro para SGML

http://conectiva.com.br/~aurelio/sed/programas/txt2sgml-sed

expressões regulares – parte 1

http://www.RevistaDoLinux.com.br/ed/003/ferramentas.php3

expressões regulares – parte 2

http://www.RevistaDoLinux.com.br/ed/007/ereg.php3

txt2regexp – programa “wizard” de expressões regulares

http://freshmeat.net/projects/txt2regexp

valeu.

--
s·:(·>(·×^a]×http://www.verde666.org×^[:wq
---------------------------->8-----------------------------

A resposta veio a jato, em 10 minutos:

Temos interesse muito grande em um guia sobre Expressões Regulares. Existem muitos detalhes a serem esclarecidos e por telefone é mais prático neste momento. Favor informar o seu número de telefone e o melhor horário para eu ligar. Se preferir, ligue para mim no fone (0xx11) 6979-XXXX ou 6959-XXXX.

É difícil explicar o que senti neste momento.

Era uma manhã normal de trabalho, eu estava tranquilo lá no meu computador. Fazendo algum script, lendo email, sei lá. Um dia como qualquer outro. Aí do nada, numa conversa normal, o chefe faz uma pergunta estranha e minutos depois, tenho na minha caixa o email de uma editora dizendo que tem interesse em um livro que eu poderia escrever!

ogrito

Cerca de três meses depois, em 31 de julho de 2001 era lançado na Fenasoft meu primeiro livro: Expressões Regulares — Guia de Consulta Rápida. O trabalho de escrita foi intenso, me internei para conseguir terminar tudo antes da feira. Mas a satisfação de ver o livro na minha mão brilhando, folheá-lo, cheirá-lo, valeu a pena.

Foi o primeiro livro sobre o assunto, escrito em português. Naquela época havia alguns poucos em inglês. Para desespero do editor, ele não conseguiu tirar da minha cabeça a ideia de disponibilizar o livro completo na Internet, e assim o fiz. Dias antes do lançamento, todo o livro já estava inteiro disponível no meu site, para quem quisesse consultar. E de fato, até hoje ele ainda está lá, livre e gratuito.

————— ∞ —————

O livro me deu uma visibilidade boa, fiquei mais conhecido e assim aumentaram as visitas no meu site, e ganhei usuários novos para meus programas. Também começaram a aparecer convites para dar palestras e cursos em eventos, e assim, aquele cara que em 1999 torceu o nariz quando viu as expressões pela primeira vez e sofreu bastante para aprendê-las, agora tinha se tornado uma referência no assunto. É… Vale a pena o esforço, pode acreditar.

Durante cerca de cinco anos o livrinho verde vendeu, devagar e sempre, cerca de 40 exemplares por mês. Ao preço de 20 reais e com 8% de direitos autorais para o autor, eu ganhava incríveis R$ 1,60 por exemplar vendido. E aí, animou-se a virar escritor(a)? :) Fazendo as contas, dava cerca de 60 pilas por mês no meu bolso. É, dava pra pagar umas passagens de ônibus e uns X-saladas…

Em 06/09/2006, Rubens Prates escreveu:
Aurélio, temos apenas 45 exemplares em estoque do ER, fora o que está consignado nas livrarias. Logo teremos que reimprimi-lo. O que deve ser corrigido, fora o que está indicado na errata do seu site?

Em 2006 o estoque do livrinho estava acabando, e em vez de fazer uma reimpressão, o editor teve a ideia de transformá-lo em um livro de verdade. Me empolguei, pois eu não gostava de chamar o guia fininho de "livro", era um --force. Fiz uma reforma geral no conteúdo, além de ter adicionado tópicos novos, o que fez o livro pular de 96 páginas estreitas para 141 páginas espaçosas. Nasceu o Expressões Regulares — Uma Abordagem Divertida.

Ah, e sabe quem também nasceu neste momento?

Em 22/09/2006, Karine Hermes escreveu:
Percebi que, no decorrer do texto, você introduz comentários, como se alguém estivesse conversando com você, lhe perguntando coisas, aprendendo… O que você acha de utilizarmos um personagem para isso? Veja, em anexo, duas páginas de teste que fiz.

piazinho-beta

O piazinho em sua primeira aparição

O piazinho deu mais alegria ao texto, virou mascote e o livro foi um sucesso de vendas. Com uma média de 95 exemplares vendidos por mês, meus ganhos com direitos autorais aumentaram consideravelmente, batendo na casa do R$ 300,00 mensais. Nada mal, não dá pra viver disso, mas já pagava algumas contas.

O blog já existia quando lancei este livro, então quem é leitor mais antigo, acompanhou toda a saga em tempo real :) Você viu o nascimento, o lançamento, o sucesso de vendas, o milésimo exemplar, e comemorou junto o primeiro ano de vida. Ah sim, nesse meio tempo você também descobriu que ele é um livro para crianças e que o piazinho da capa existe na vida real :)

Em 2008 o livro branco esgotou-se, e novamente veio a dúvida se faríamos uma simples reimpressão ou se daríamos um passo adiante, fazendo uma segunda edição com conteúdo novo. Confesso que no início eu estava com preguiça, mas com o incentivo da Mog e do editor, fiz mais uma reforma geral no livro, adicionei tópicos novos e até uma tirinha do Nerdson entrou na brincadeira.

Assim nasceu o amarelão, com direito a site próprio, muito chique. No primeiro mês ele foi o mais vendido na Livraria Cultura e no mês seguinte fez dobradinha no pódio com a concha galáctica. Com nove meses de vida foi vendido o milésimo exemplar e mês que vem ele completará um aninho.

Será?
Será que dura até lá?

Eu ouvi uns rumores vindos do norte, dizendo que parece que o estoque estava meio baixo… Se isso for verdade, mais uma vez será a hora de escolher entre a reimpressão e uma nova edição. E mais uma vez estou com preguiça. A história se repete :)

E você, o que acha?
O livro tá bom como tá?
O que você gostaria de ver na 3ª edição?

bejomeliga

— EOF —

Gostou desse texto? Aqui tem mais.