Это должно работать:
^\d+\s?(\([^\)]+\)\s?)?Z$
Не проверял его, но позвольте мне дать вам разбивку, поэтому, если есть какие-то ошибки, они должны быть довольно просто найти:
Сначала начало:
^ = beginning of string
\d+ = one or more decimal characters
\s? = one optional whitespace
Затем эта часть:
(\([^\)]+\)\s?)?
На самом деле:
(.............)?
Что делает следующее содержимое необязательно, только если оно существует полностью
\([^\)]+\)\s?
\( = an opening bracket
[^\)]+ = a series of at least one character that is not a closing bracket
\) = followed by a closing bracket
\s? = followed by one optional whitespace
И конец состоит из
Z$
Где
Z = your constant string
$ = the end of the string