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