Oi Priscila, tudo bom?
Isso só funcionou pra você porque o Match
teve sucesso!
Quando você passa um objeto para oConsole.WriteLine()
, ele automaticamente da um.ToString()
para poder exibir no console, certo?
Ou seja, ficaria assim resultado.ToString()
.
Se você acessar as propriedades da classe Match
, você consegue ver o que o ToString
faz com o objeto.
Veja o que diz no override
de ToString
//
// Summary:
// Gets the captured substring from the input string.
//
// Returns:
// The actual substring that was captured by the match.
[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
public override string ToString();
Isso quer dizer que ele pega o valor atual do que foi capturado pelo Match
Se por acaso o seu resultado tivesse falhado, você teria um valor vazio impresso na tela.
Então seria legal você verificar se ocorreu tudo certo antes de exibir o resultado.
exemplo:
Match resultado = Regex.Match(textoDeTeste, padrao);
if(resultado.Success)
{
Console.WriteLine(resultado);
}
Apenas para complementar, da maneira que você está fazendo, se na sua string possuir mais de um resultado será exibido apenas o primeiro que o Match encontrar.
Veja esse exemplo na documentação oficial da Microsoft
Onde a verificação se ocorreu Match está preso em um looping, e dentro dele está buscando o Proximo Match e imprimindo no Console.
Espero ter sido claro, qualquer dúvida pode comentar...