お世話になります。

HTMLファイルを読ませて、そこからタグを一つ一つ拾い上げるコードを作成中なのですが、そこそこ2000kb程度のテキストに検索をかけると、何度やってもフリーズしてしまいます。

VisualStudioCommunity2019,バージョンは16.2.4です。

コード、もしくは正規表現のパターンに間違いなどありましたらご指摘ください。

以下がコードです。

string stBuff = File.ReadAllText("xxx.htm",Encoding.UTF8);

stBuff = stBuff.Replace("\r\n", "");
stBuff = stBuff.Replace("\n", "");

ofd = null;

int id = 0;
//while (true)  うまくいかないのでループは外してあります。
{
    Match mc = Regex.Match(
        stBuff,
        @"<(?<tag>.*?)>[^<>]*?</\k<tag>>"
    );

    if (!mc.Success)
    {
        //break;
    }

    MessageBox.Show(mc.Value);
    stBuff = stBuff.Replace(mc.Value, "『" + id + "』");
    id++;

    this.Text = "" + id;
}

this.textBox1.Text = stBuff;