Com a expressão regular abaixo eu consigo criar um array como o que está mais abaixo
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
teste </BODY>
</HTML>
O Array gerado:
Matches[0] = <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Matches[1] = <HTML>
Matches[2] = <HEAD>
Matches[3] = <TITLE>
Matches[4] = </TITLE>
Matches[5] = <META NAME="Generator" CONTENT="EditPlus">
Matches[6] = <META NAME="Author" CONTENT="">
Matches[7] = <META NAME="Keywords" CONTENT="">
Matches[8] = <META NAME="Author" CONTENT="">
Matches[9] = <META NAME="Description" CONTENT="">
Matches[10] = </HEAD>
Matches[11] = <BODY>
Matches[12] = </BODY>
Matches[13] = </HTML>
Não só para destrinchar o código HTML, mas também para trabalhar com templates essa fórmula de expressão regular é muito usada, imagine o caso de ter um templatezinho do corpo de um email assim:
___________________
Prezado {apelido},
Favor confirme seu cadastro junto nossa empresa, as informações que temos são:
{nome_completo}, nascido em {data_nascimento}, com endereço residencial em {endereco_residencial}.
___________________
Daí usamos a expressão regular {[^}]*} para formar um array com todos os parâmetros do template para substituir depois. Se fossemos usar um mero replace, precisaríamos engessar o código com cada um dos parâmetros usados, usando a expressão regular, a parametrização fica dinâmica, permitindo até que o próprio usuário do sisteminha de email diga o que vai em cada parâmetro.
Por exemplo:
A lista de destinos é composta por:
SELECT Clientes.Apelido, Clientes.Nome, Clientes.DataNascimento, Clientes.Endereco, Clientes.Email
FROM Clientes
ORDER BY Clientes.Nome
E em uma tela do sisteminha, o usuário pode escolher qual dos campos da lista está vinculado a qual dos campos do template, dando uma flexibilidade bem jóia pro envio de email, trabalhinho bem facilitado pela expressão regular.
{apelido} = Clientes.Apelido
{nome_completo} = Clientes.Nome
{data_nascimento} = [ Informe aqui o campo que deseja usar ]
{endereco_residencial} = [ Informe aqui o campo que deseja usar ]