Eclesiastes

Ícone

Sobre o que é este blog? O.o

Combinações aninhadas

A pouco descobri que a Microsoft inovou no suporte a expressões regulares no .NET a muito tempo atrás! (Como estou atrasado!) Ele suporta Balanced grouping, onde por meio dele é possível fazer uma expressão regular analisar aninhadamente. Que basicamente funciona da seguinte forma: é permitido a criação de um grupo nomeado, por exemplo: (?<DEPTH>), que a cada vez que ele aparece numa iteração é armazenado na backtracking stack, ajudando a marcar assim, a profundidade para encerrar os nós analisados. E para subtrair, utilizamos (?<-DEPTH>)(Veja mais detalhes sobre essa construção no link da MSDN) , o que indicará que um nó foi fechado.

Copiando o exemplo do Greg Reinacker’s Weblog

Temos a seguinte ER:
<div>(?><div(?<DEPTH>)|</div(?<-DEPTH>)|.?)*(?(DEPTH)(?!))</div>

Onde será combinado a parte em negrito:
<div>this is some <div>red</div> text</div></div></div>

Referências

» http://www.rassoc.com/gregr/weblog/archive.aspx?post=590
» http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpcongroupingconstructs.asp
» http://www.mamiyami.com/document/regex/0596002890_mastregex2-chp-9-sect-6.html

Arquivado em:Regex

One Response

  1. austin disse:

    I am interested in cash backs. I shop a lot so I want to get at least some of my money back. So I’ve found this very helpful site with credit card comparison

    instant discover card

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: