Either
(?P<author>.+?) - (\[(?P<series>.+?) (?P<series_index>[0-9]+)\] - )?(?P<title>.+)
or
(?P<author>.+?)( - (\[(?P<series>.+?) (?P<series_index>[0-9]+)\])? - (?P<title>.+)
would work. If you don't have any filenames with series information, then the following might be simpler:
(?P<author>.+?) - (?P<title>[^_]+)
|