Ответ 1
Простейшим решением было бы явно запретить тире быть частью первой группы:
^([^-]*) - (.*)
Объяснение:
^ # Start of string
([^-]*) # Match any number of characters except dashes
\ - \ # Match a dash (surrounded by spaces)
(.*) # Match anything that follows
Однако это не сработает, если ваша строка может содержать тире в первой группе (просто не окруженной пробелами). В этом случае вы можете использовать ленивые квантификаторы:
^(.*?) - (.*)
Объяснение:
^ # Start of string
(.*?) # Match any number of characters, as few as possible
\ - \ # Match a dash (surrounded by spaces)
(.*) # Match anything that follows