It would help to have your base regex - it may have something special you use elsewhere.
If not, try this :
Code:
(?P<author>.+?) - (?:(?P<series>.+?) (?:(?P<series_index>\d+(?:\.\d+)?) - )?)?(?P<title>.+)
or with space as whitespace:
(?P<author>.+?)\s-\s(?:(?P<series>.+?)\s(?:(?P<series_index>\d+(?:\.\d+)?)\s-\s)?)?(?P<title>.+)