[Cascavel-pm] coincidência de padrões e um lugar específico numa string

Luis Motta Campos luismottacampos em yahoo.co.uk
Terça Agosto 26 11:19:18 PDT 2008


Gabriel Vieira wrote:
> $a=~/^(?:.*?\n){$linha}[^\n]*?$palavra/
> 
> $a contém (=~), no início de seu valor (^), qualquer caractere (.),
> zero ou mais vezes (*), limitando o seu tamanho até o próximo match
> (?), no caso uma quebra de linha (\n), tudo isso é um grupo que não é
> capturado ((?:)) e cujo tamanho, ou vezes que esse grupo é aplicado, é
> {$linha}. Isso tudo seguido de qualquer caractere se não nova linha
> ([^\n]), zero ou mais vezes (*), limitando o seu tamanho até o próximo
> match (?), no caso $palavra.
> 
> Que tal ler o perlre?

Hum. Vamos com calma. os quantificadores "*?" e "+?" são /non-greedy/. 
Isso quer dizer que eles vão dar match com a menor quantidade possível 
de caracteres que não invalide o resto da expressão.

Compare com as versões /greedy/ ("*" e "+"), que batem com a *maior* 
quantidade possível de caracteres que não invalide a expressão.

Qualquer definição fora desta é enganosa e pode dar problemas futuros.

Putamplexos!
-- 
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.


Mais detalhes sobre a lista de discussão Cascavel-pm