Expressões Regulares: Casar textos entre chaves

Olá, pessoal!


Hoje vou mostrar uma dica bem legal, como casar textos entre chaves usando expressões regulares.


A necessidade surgiu de um amigo, o Rogério, e eu resolvi buscar uma solução.


Para o exemplo vou utilizar a string "ola, {sou} uma string com {varios} caracteres {especiais}".


A ideia aqui é que o retorno seja composto pelos textos "{sou}", "{varios}" e "{especiais}".


Então vejam a solução em PHP:


$pattern = '/\{.*?\}/';
$text = "ola, {sou} uma string com {varios} caracteres {especiais}";
preg_match_all($pattern, $text, $result);
print_r($result);

O resultado seria:


Array
(
[0] => Array
(
[0] => {sou}
[1] => {varios}
[2] => {especiais}
)
)

Isso mesmo, um array com cada resultado em um ítem.


Agora uma solução em Python:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
pat = re.compile('\{.*?\}')
text = "ola, {sou} uma string com {varios} caracteres {especiais}"
results = re.findall(pat, text)
for result in results:
print(result)

O resultado seria:


{sou}

{varios}

{especiais}


No Python foi necessário utilizar o módulo re para tratamento das expressões regulares.


Então, essa foi a dica de hoje. Alguém quer mostrar a solução em outra linguagem, ou melhorar as propostas? É só comentar.


InFog


Evaldo Junior

Desenvolvedor web, palestrante, escritor e usuário e contribuidor do Software Livre.

comments powered by Disqus