Eclesiastes

Ícone

Sobre o que é este blog? O.o

Usando múltiplos assertions

Assertion é o nome dado ao teste feito nos caracteres seguidos ou precedidos na posição atual da combinação que não consome caracteres.
Exemplos básicos de lookbehind assertion e lookahead assertion podem ser vistos aqui!

 Vários assertions podem ser usados sem problemas. Por exemplo,

(?<=\d{3})(?<!999)foo

combina “foo” precedido por 3 dígitos que não são “999”. Cada assertion é aplicado independentemente no mesmo ponto na string. Primeiro ele verifica que os três caracteres anteriores são dígitos, e então verifica se os mesmos não são “999”. Este padrão não combina “foo” precedido por 6 caracteres, o primeiro vê se são dígitos e o último se não são “999”. Por exemplo, não combina “123abcfoo”. Um padrão para fazer isso seria

(?<=\d{3}...)(?<!999)foo

Neste a primeira assertion verifica se é precedido por seis caracteres, verificando que os três primeiros são dígitos, e então a segunda assertion verifica se não é precedido por “999”.

Assertions podem ser aninhadas em várias combinações. Por exemplo,

(?<!foo)bar)baz

combina a ocorrência de “baz” se é precedida por “bar” que não preceda por “foo”, quando

(?<\d{3}(?!999)...)foo

é um outro padrão que combina “foo” precedido por três dígitos e três caracteres que não seja “999”.

Referência

Arquivado em:Regex

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: