Ich bin mit dieser Regex-Syntax zwar nich so vertraut, aber weil ich nich schlafen kann:
Dieser Teil "[^(/>)]" matcht doch ein Zeichen, weil ohne Mengenangabe, oder? Das würde dann nämlich bedeuten, dass zwischen "<hr" und ">" noch ein entsprechendes Zeichen sein müsste, damit es passt.
Wie gesagt, bin ich damit nicht so vertraut (kenne mich eher mit POSIX-Regexen aus), aber ich vermute, dass Du etwas verwechselt hast. Ich vermute nämlich, "[^(/>)]" bedeutet, wie ich es kenne, ein Zeichen, dass nicht "(", "/", ">" und ")" ist und Du wolltest damit irgendwas anderes machen.
Ich hoffe mein unqualifizierter Kommentar hilft Dir ein bischen.
Viel Glück.