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

Nilson Santos Figueiredo Junior acid06 em gmail.com
Quarta Maio 31 15:50:32 PDT 2006


On 5/30/06, Eden Cardim <edencardim em gmail.com> wrote:
> dessa vez não tenho ajuda da string de entrada. Quero que a expressão
> regular case com a maior substring possível tal que essa string tenha
> 90% (ou uma outra porcentagem qualquer) de um determinado caracter
> dentro dela. No caso:
>
> 'XXXXXAXXXX'
> 'XXXBXXXXXBBXXXXXXXXX'
> ...são reconhecidas e...
> 'XXXAAXXXXXBBXXXXXXXXX'
> reconhece a substring 'XXXXXBBXXXXXXXXX'

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.

Então, caso você deseje pesquisar uma solução mais adequada, pesquise
sobre programação de dinâmica aplicada a essa classe de problemas. Tem
muita coisa na internet.

-Nilson Santos F. Jr.


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