Hi,
According to your problem description you want all changes to be listed in the richTextBox2, right? If so, your code modifies the Text of richTextBox2 in each iteration and only the final value will be left there. I think what you should do is, concatenate the changes in to the richTextBox2.
richTextBox2.Text += (Regex.Replace((richTextBox1.Text), @" " + textBox2.Text + " ", " <a " + textBox3.Text + ">" + textBox2.Text + "</a> ") + "\n");
Regards.