Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Sobre negação em regex

Não entendi a negação em regex. A definição da Alura é a seguinte: Podemos definir uma classe de caracteres que seleciona tudo que não é um >. Essa negação é feita através da meta-char ^.

A expressão regular dada é

<h1[^>]+>

O resultado é

<h1 id="regex" class="form">

Para mim o resultado deveria ser, considerando a definição "seleciona tudo que não é um >. Essa negação é feita através da meta-char ^" :

h1 id="regex" class="form"

Por que não é isso?

1 resposta
solução!

Olá Geovane, a iteração do regex é feita caractere a caractere, se uma regra não se aplica, ele tenta aplicar a próxima, se nenhuma das regras se aplica ao caractere atual, ele não seleciona.

Assim, no exemplo, a primeira regra da expressão se aplica logo no inicio <h1. Após isso a regra é [^>]. O próximo caractere da frase é um espaço, que não é o caractere >. Assim, a regra se aplica. Ótimo! Agora o sinal de + indica que ele vai continuar aplicando essa regra para todos os caracteres seguintes até ela não funcionar mais. Ela ira funcionar até encontrar o sinal > que fecha a tag html. Quando chegar no sinal > da tag html, vai invalidar a regra e passar para a próxima e ultima regra, que é justamente o caractere >. Assim o regex consegue dar o match certinho na tag.

Espero ter ajudado a esclarecer!