I only have a little comment:
if you replace an expression by a longer expression (e. g. '*' by '.*') part of the selected text is deselected (the number of selected characters remains constant).
It can cause problems if you have to perform several replacements.
It could probably be solved by:
- making the difference (D) of the replacing expression length and the replaced expression length
- extending the selection after replacement of (number of replacement)*D
Anyway thanks a lot for your submission, it's really great :-)