Kv field_split with bracketed internal data

I've got some incoming data that looks like this:

author:(neil stephenson) title:(snow crash)

I would like to KV on spaces, but only on spaces not wrapped in parenthesis. These settings doesn't seem to cut it:

value_split => ":"
field_split => " "
include_brackets => true

Secondly, some times this field also includes extra unsplitable data:

author:(neil stephenson) title:(snow crash) some extra raw keywords here

Is there any way to get any matched keys that have no value data from the kv, and join them (in order) back together? Any ideas on how to split this would be appreciated.