Не используйте .+
, используйте дополненный класс символов: это позволяет вообще не заботиться о жадности.
Вы должны использовать это как регулярное выражение: ([^-]+)-([^-]+)
.
Всегда делайте все возможное, чтобы как можно лучше оценить ваш вклад.Здесь вы хотите сопоставить все, что не является тире, один или несколько раз, и захватить его (([^-]+)
), затем тире (-
), затем (снова) все, что не является тире, один или несколько раз, изахватить его (([^-]+)
).
Полагаться на (не) жадность квантификаторов - это фундаментальная ошибка, если вы знаете, что можете описать свой ввод без опоры на него.Это не только источник ошибок (как вы сами демонстрируете), но и препятствие для работы механизма регулярных выражений с максимальной эффективностью.