You'd need to have them all have some uniform style, or writing the regex could take nearly as long as doing it manually.
We could do it with multiple passes. For instance,
Find:
Code:
(^[^-]+)( - .*)?(: A Novel|other junk endings)?
Replace:
Should chop off everything including and after a "-" and removes pesky ": A Novel" and other standardized junk endings.
Find:
Code:
(^[^:]+):.*(\[\d\]|, Book \d+)
Replace:
Removes anything after a ":" but only if it also matches a "[#]" or the string ", Book #" where # is an actual number of any length. Presumably those are always series' of some sort.
These two should cover every example you gave.
EDIT: Combine the two together with (I think)
Code:
(^[^-:]+)(: (A Novel|other junk endings|(.*(\[\d\]|, Book \d+))))?( - .*)?
I hope you don't have any more styles to filter, though, or this may end up becoming monstrous.