ganz billig:
* mehrmals ersetzen
* <OldPattern> durch einen Platzhalter
* dann OldPattern durch NewPattern
* und am Ende den Platzhalter zurück zu <OldPattern>
in deinem StringReplace:
* zwei mal suchen (PosEx) nach "<123>" und "123"
* nur wenn der aktuelle Treffer nicht von Beiden gefunden wurde, dann ersetzen, ansonsten weitersuchen
* oder nach OldPattern suchen
* dann prüfen, ob < bzw. > davor/dahinter und nur ersetzen, wenn nicht
Oder ganz banal mit RegEx, was Diesbezüglich bereits alles bietet.
TRegEx