[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