Files

1.9 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7db6367417b2b2512b9b Encontrar caracteres com captura preguiçosa 1 301341 find-characters-with-lazy-matching

--description--

Em expressões regulares, uma captura gananciosa encontra a parte mais longa o possível de uma string em que a regex atua e a retorna como resultado. A alternativa se chama captura preguiçosa e ela encontra o menor pedaço o possível de uma string que satisfaz a regex.

Você pode aplicar a regex /t[a-z]*i/ à string "titanic". Essa regex é basicamente um padrão que começa com t, termina com ie tem algumas letras no meio delas.

Expressões regulares são gananciosas por padrão, então o resultado seria ["titani"]. Ou seja, a maior string o possível que atende ao padrão é encontrada.

Mas você pode usar o caractere ? para torná-la preguiçosa. Aplicar a regex adaptada /t[a-z]*?i/ à string "titanic" retorna ["ti"].

Observação: ler HTML com expressões regulares deve ser evitado, mas procurar uma string HTML usando expressões regulares é perfeitamente aceitável.

--instructions--

Arrume a regex /<.*>/ para que retorne a tag HTML <h1> mas não a linha "<h1>Winter is coming</h1>". Lembre-se de que o caractere curinga . em uma expressão regular captura qualquer caractere.

--hints--

A variável result deve ser um array contendo <h1>

assert(result[0] == '<h1>');

myRegex deve ser preguiçosa

assert(/[^\\][\*\+\?]\?/.test(myRegex));

myRegex não deve incluir a string h1

assert(!myRegex.source.match('h1'));

--seed--

--seed-contents--

let text = "<h1>Winter is coming</h1>";
let myRegex = /<.*>/; // Change this line
let result = text.match(myRegex);

--solutions--

let text = "<h1>Winter is coming</h1>";
let myRegex = /<.*?>/; // Change this line
let result = text.match(myRegex);