Aviso! Estamos em Beta. Caso encontre algum problema, envie um email para games@vidageek.net

Aprenda RegEx

Expressão Regular é uma excelente forma de encontrar padrões em textos, mas a sua sintaxe é um pouco obscura. Com esses exercícios você conseguirá não apenas entender como RegEx funciona, mas será capaz de utilizá-la.

Você pode começar os exercícios pelo primeiro ou escolher um grupo abaixo:

Conteúdo:

Reconhecimento de Letras

A parte mais básica para a construção de uma Expressão Regular (RegEx) são os caracteres simples. As RegEx mais básicas são compostas apenas por caracteres simples, como a, 1 e C.

Exemplo:

A exceção à essa regra são alguns caracteres, que possuem um significado especial dentro das RegEx ($, ^, *, (, ), +, {, }, [, ], \, |, ?, -, .). Para utilizá-los como caracteres normais, você precisa colocar uma \ antes deles.

Além desses, existem ainda alguns caracteres que não são visíveis, e dentro de RegEx eles são representados usando caracteres escapados:

Exemplo:

O último detalhe que é importante levar em consideração é que as RegEx diferenciam caracteres maiúsculos de caracteres minúsculos.

TopoComeçar!

Classes de Caracteres

Para ser capaz de reconhecer padrões mais complexos que simples sequências de caracteres, é possível definir classes de caracteres. Uma classe de caracteres funciona como se fosse um caractere capaz de reconhecer vários caracteres diferentes.

Para definir uma classe de caracteres, você utiliza os caracteres [ e ] envolvendo os caracteres que você quer que as classes de caracteres reconheça.

Exemplo:

Uma classe de caracteres para reconhecer todas as letras maiúsculas seria algo como [ABCDEFGHJKLMNOPQRSTUVWXYZ], o que é bem ilegível e talvez você não note que falta algum caractere (notou que aquela RegEx não reconhece o caractere I?). Para resolver esse problema, é possível criar uma classe de caracteres para uma sequência de caracteres, utilizando o caractere -.

Exemplo:

Como existem algumas classes de caracteres que são muito comuns, existem algumas classes pré-definidas. São elas:

Exemplo:

TopoComeçar!

Oposto de uma Classe de Caracteres

Um recurso muito poderoso de classes de caracteres é a possibilidade de definir classes que não contenham determinados caracteres.

Para fazer isso, você acrescenta um ^ logo após o [ que marca o começo da classe de caracteres.

Exemplo:

Também existem classes de caracteres opostas pré-definidas:

Exemplo:

TopoComeçar!

Múltiplos Padrões

Uma forma simples de se especificar múltiplos padrões que uma RegEx deve reconhecer é; utilizar o caractere | para separá-los.

Exemplo:

TopoComeçar!

Operadores de Repetição

Dificilmente você encontrará uma RegEx que não utiliza algum operador de repetição. A idéia principal desses operadores é permitir que você defina um padrão específico que você espera que ocorra um determinado número de vezes.

Os operadores de repetição são:

Um fato importante é que o que vem antes de um operador de repetição não precisa ser apenas 1 caractere. Pode ser uma classe de caracteres ou qualquer outra forma de agrupamento.

Exemplos:

TopoComeçar!

Grupos de Captura

Imagine que agora gostariamos de, por exemplo, pegar parte de um texto reconhecido por nossa RegEx, e o substituir por outras partes. Na maioria das vezes desejamos pegar parte do nosso texto e fazer manipulações sobre ele. Isso essencialmente é algo que dá bastante sentido para se utilizar RegEx, somos capazes de fazer buscas de padrões complexos e fazer algum tipo de processamento.

Para isso a RegEx tem um recurso chamado de grupos de captura.

Para definir um grupo de captura você utiliza os caracteres( e ) envolvendo o padrão de RegEx que você que capturar no seu texto.

Exemplo:

TopoComeçar!

Back References

Existem alguns casos em que queremos, dentro de uma RegEx, reconhecer um trecho previamente capturado.

Um exemplo clássico é encontrar o conteúdo entre duas tags

Para isso, podemos usar back references, ou seja, referências à algo previamente capturado.

Para utilizar uma back reference, utilizamos o caractere \ seguido pelo número do grupo de captura que queremos referenciar. Vale lembrar que o grupo 0 é tudo que a RegEx encontrou. Então só faz sentido começarmos a referenciar a partir do 1.

Exemplo:

TopoComeçar!

Ancoras

Âncoras servem para dar uma referência para as suas RegEx. Por exemplo, você pode querer reconhecer tomate, mas não querer reconhecer o tomate.

Para fazer isso, você pode usar um operador como o ^, que âncora ao começo da linha, o $ que âncora ao fim da linha e o \b, que ancora a qualquer coisa que não seja uma letra ou número.

Exemplo:

TopoComeçar!

Modos da RegEx

Imagine que você quer fazer uma RegEx que reconhece flor, mas que também reconheça Flor e fLoR. Embora [fF][lL]o[rR] funcione, ela não é muito elegante.

Para situações como essa, onde você quer que a RegEx não diferencie maiúsculas de minúsculas, você pode colocar (?i) na frente dela.

Exemplo:

Em algumas outras situações, queremos que o operador . também seja capaz de reconhecer -Quebra-de-Linha-. Para isso, você pode colocar (?s) no começo da RegEx.

Exemplo:

TopoComeçar!

RegEx no Mundo Real

Agora que você já sabe bastante sobre RegEx, o que falta é praticar.

Estes são exercícios bem mais difíceis que os anteriores.

Caso fique preso em algum exercício, dê uma olhada nas explicações dos exercícios anteriores.

TopoComeçar!