Extract text subsets from a form field to distribute among other fields

Hello

I have a bunch books in my digital library (Calibre) where the title text on each book's metadata form also contains information about author(s), series, series number, published date, in addition to title. I am trying to extract pieces from this text string to distribute among other fields on this form (Author, Series, Published Date) while leaving the title where it is.

I don't mind using individual macros for each element, if that's necessary. I already use a bunch to navigate form fields and do things like cutting out bits of the text and pasting it to, for example, the author field, after manually selection of the authors.

However, each of this large subset of books do seem to have a predictable pattern. For example, when my Calibre digital library imported this book, it placed this entire text into the title field of the metadata form:

(Operator Theory Advances and Applications, 287) Christian Seifert, Sascha Trostorff, Marcus Waurick - Evolutionary Equations Picard's Theorem for Partial Differential Equations, and Applications (2022)

The first set of parentheses contains the book's series and (after a comma) the series number.

Everything between the closing parenthesis and the hyphen (-) is one or more authors.

Everything between that hyphen and the end of the text - or until the opening parenthesis of the publication date, if it has one - is the book title, and finally,

If there is a publication date, it is placed within parentheses at the end of the text.

I don't mind learning regular expression to figure out how to build a pattern for this and, as mentioned, I am able to create simple Keyboard Maestro macros to help with most of my workflow, but I am at a loss on how to put all of this together. Once I have navigated to the title field and selected all of the text, would I then cut it into the clipboard and then partition my pieces in there? or would I cut out, step by step, each chunk and move it to its proper field? how would I do that? which actions should I be using?

Any help with this would be greatly appreciated!

Thank you

Bill