Olá Rozenildo! Tudo bem? =)
Vamos lá, que RegEx às vezes dá uns nós da cabeça, mesmo. Rs.
Só para facilitar, a RegEx do exercício é a seguinte:
<(a)\s+href="(.+)"(?:>(.*)<\/\1>)
A primeira coisa, quais grupos ele seleciona? Cada parênteses representa um grupo, ou seja:
(a)
é o primeiro grupo.(.+)
é o segundo grupo.(?:>(.*)<\/\1>)
é o terceiro grupo.
Observe ainda que dentro do terceiro temos um quarto grupo:
Vamos prosseguir... Quais são os grupos que essa expressão não seleciona?
Os grupos não capturados são aqueles que começam com ?:
, ou seja, o terceiro grupo: (?:>(.*)<\/\1>)
.
E aí basta sabermos um exemplo de match inteiro. O que sabemos até aqui?
- O texto deve começar com
<
; - Em seguida, devemos ter a letra
a
; - Continuamos com um ou mais espaços;
- Temos, então, o texto
href="
; - Após isso, um ou mais caracteres quaisquer;
- O conteúdo continuar com
"
.
Como vamos entrar em uma parte mais complicada, vamos ver o que temos até aqui, de fato:
<a href="www.google.com.br"
Agora vem a parte que talvez você tenha se confundido. Vem um grupo com:
>
;- Um subgrupo, que está sendo capturado, com qualquer coisa (
*.
); - Então temos
</a>
, fazendo backreference ao primeiro grupo capturado.
Dessa forma, nosso exemplo pode ser:
<a href="www.google.com.br">Google</a>
Ou, como no exemplo:
<a href="www.alura.com.br">Cursos online</a>
Espero ter ajudado! Qualquer dúvida, não deixe de postar por aqui para podermos ajudar! =)
Abraços e bons estudos,
Fábio