Fala pessoal, tudo certo? Meu nome é Raul, tenho 24 anos e sou desenvolvedor há quase 3 anos. Comecei a programar na faculdade com Java, PHP, até me deparar com o fascinante mundo do client-side e resolver abandonar um pouco o server-side pra entender a mágica da força trindade HTML, CSS e Javascript.
Há pouco mais de uma semana eu me deparei com um problema que todo desenvolvedor já se deparou — e se ainda não, eu garanto que vai — que é encontrar um padrão textual em uma massa de dados. No caso, era pra fazer uma leitura de um código HTML inteiro e filtrar determinadas informações. Essa prática é chamada de Web Scraping.
Fazer isso manualmente apesar de trabalhoso, é fácil, afinal, é da natureza do ser humano buscar padrões em todo lugar. Mas e programaticamente? Bom, aí as coisas começam a ficar um tanto complicadas, afinal, são muitas variáveis como: “pode ou não vir uma classe”, “pode ou não ter id” e etc. É aí que a gente se depara com as tão temidas Expressões Regulares.
Voltando ao meu problema, tentei fazer de diversas formas (mesmo sem saber direito o que eu estava fazendo).
Então eu decidi que eu iria estudar pra valer e aprender de uma vez por todas isso. E como é como dizem:
A melhor forma de aprender, é ensinando!
Mas afinal, o que é Expressão Regular?
Expressão Regular é uma linguagem de busca de padrões. Resumindo bem a opera, é uma linguagem onde dizemos o padrão (pattern) do texto que queremos encontrar, passamos o texto alvo (target) e pedimos para uma Regex engine (motor) fazer essa busca. É como se fosse o famoso ctrl+f, só que muito mais profundo e detalhado.
Como mencionado, para que seja possível realizar uma busca utilizando Regex, é necessário uma Engine, ou seja, um motor que tem a finalidade de avaliar o contexto e fazer a busca.
Cada linguagem de programação tem o seu motor e apesar de Regex ter um padrão fixo, há algumas diferenças e detalhes na implementação em cada uma. Mas o que vai mudar de fato é a forma com que se trabalha, e não a lógica e os padrões em si.
Show me the example
Bom, vamos ver como funciona esse tal de Regex na prática pra ficar mais fácil.
Digamos que eu tenho um arquivo CSV com milhares de linhas com informações de pessoas, contendo na sequência: Nome; Endereço; Cep e Telefone.
João da Silva;Rua Cabloco terceiro, 25;11111-111;(99)9999-9999Márcio Cunha;Rua João Gourlat, 150;12123111;(99)8888-9999
Então, queremos pegar apenas o CEP de todas as linhas de nosso arquivo. A forma mais fácil (não a mais otimizada) de fazer isso seria:
Internal server error