Regex - Nomeando grupos

PHPPerlPython
Enviado por Eclesiastes em Seg, 31/07/2006 - 18:15.PHP | Perl | Python

Olá pessoal!
Aprendi algo que para mim é novidade, e que de fato, nunca vi utilizarem. Que é a nomeação de grupos na expressão regular, mudando assim como é o comum de utilizarmos como retrovisor. (\1, \2, ...)

A mudança não fica só na expressão regular, pois no retorno dos grupos casados, o nome dado ao grupo virá como chave indicando o valor do grupo. (Ao menos no PHP)

Veja um exemplo no PHP, utilizando uma função que utiliza expressão regular compatível com Perl. (PCRE):

  1. <?php
  2.  
  3.     $string = 'tico-tico';
  4.    
  5.     preg_match('{(?P<tico>tico)-(?P=tico)}', $string, $match);
  6.  
  7.     print_r($match);
  8.    
  9.     /**
  10.      * Array
  11.      * (
  12.      *     [0] => tico-tico
  13.      *     [tico] => tico
  14.      *     [1] => tico
  15.      * )
  16.      */
  17.    
  18. ?>

Um outro exemplo:

  1. <?php
  2.  
  3.     $string = 'felipensp@gmail.com';
  4.  
  5.     preg_match('{(?P<login>\w+)@(?P<dominio>\S+)}', $string, $match);
  6.  
  7.     print_r($match);
  8.  
  9.     /**
  10.      * Array
  11.      * (
  12.      *     [0] => felipensp@gmail.com
  13.      *     [login] => felipensp
  14.      *     [1] => felipensp
  15.      *     [dominio] => gmail.com
  16.      *     [2] => gmail.com
  17.      * )
  18.      */
  19.  
  20. ?>

Para maiores informações, e como utilizar no Python, segue o link abaixo:
Para conhecer outros metacaracteres modernosos:

Até a próxima! (:



Enviado por Pedro Faria em Ter, 01/08/2006 - 09:26.

Nossa cara... essa eu não conhecia... muito interessante isso :)

Enviado por ArQ em Ter, 01/08/2006 - 11:36.

Essa nomeacao eh boa..
ainda mais qdo se trabalha com expressoes que podem mudar facilmente os grupos..
facilita o trabalho