sábado, 7 de março de 2009

Expressão regular: lookbehind positivo - testa a existência de um item antes de outro.

\(an\_s\+\)\@<=file

Testa se o item precedente ('an') está imediatamente antes do item que o segue ('file').
Somente a linha corrente (que contém o item que segue) e uma linha antes são testadas.

Só obtém a ocorrência do item que segue.

obtém 'file' se tiver 'an file' no texto.
'an' seguido de um ou mais espaços ou fim-de-linha.

Por questão de velocidade é melhor usar o comando '\zs' no lugar:
an\_s\+\zsfile

Para economizar tempo, somente a linha aonde ocorre o item que segue e uma linha antes são pesquisadas pelo item que precede.

domingo, 1 de março de 2009

Expressão regular : quantificador guloso e preguiçoso

Um quantificador define o número de vezes que o padrão precedente pode repetir no texto:
p*
zero ou mais ocorrências de 'p'.

Um quantificador greedy (guloso, faminto, ganancioso) é aquele que tenta obter o maior número de caracteres possível.

O quantificador não-greedy (lazy, preguiçoso) tentará obter o mínimo.

Seja o texto:
"O vim é legal!", "certo ?".

".*"
obtém a linha inteira. Se a intenção era obter apenas o primeiro texto entre aspas, o quantificador greedy obteve demais (até as últimas aspas).

".\{-}"
um quantificador não-greedy, obtém o texto como esperado.