[Cascavel-pm] Como obrigar uma regex a parar e um determinado local durante a avaliação?

Eden Cardim edencardim em gmail.com
Quinta Junho 1 04:28:28 PDT 2006


On 5/31/06, Nilson Santos Figueiredo Junior <acid06 em gmail.com> wrote:
> Não estou dando uma resposta direta ao seu problema, mas...
>
> Problemas de reconhecimento de substrings e/ou alinhamento de strings
> são coisas bem estudadas na ciência da computação (e bastante
> aplicadas na área de bioinformática). Usar uma expressão regular pra
> esse tipo de tarefa, não costuma apresentar bons resultados, pois a
> engine de expressão regular utiliza um algoritmo de backtracking.
> Existem algoritmos baseados em programação dinâmica pra esse tipo de
> tarefa que a resolvem a tarefa de forma *bem* mais eficiente.

Exatamente, estou montando um protótipo de um sistema de
bioinformatica que precisa funcionar razoavelmente e tenho um prazo
quase impraticável, por isso queria uma solução mais simples e
"straightfoward" pq tenho mais uns 6 algoritmos desse tipo, um
front-end web e um banco de dados para entregar dentro de 2 semanas (e
posso chorar por mais 1 semana). Quando estiver tudo encaixado, vou
aperfeiçoando as partes individuais, seguindo o modelo de
desenvolvimento espiral, etc, eventualmente, vou substituir a regex
por um algorítmo decente.
Eu ainda queria saber (por curiosidade) se existe alguma forma que me
permita instruir ao o mecanismo de reconhecimento de regex quando
parar de consumir os caracteres da string e aceitar ou não a substring
consumida até o momento, algo como:
/((.)(?{$x++ if $2 eq 'X'; accept if $x > 10 }))+/
mesmo sabendo que isso não resolve o meu problema.


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