Я пытаюсь разобрать строки информационной версии с помощью регулярного выражения.
Строка версии отличается по своему внешнему виду
// CI Build
2020.2.18-preview.2-b5d95e5992d99f6a6eef8faf71c47df694c763bd
// CI Release Build
2020.2.18-b5d95e5992d99f6a6eef8faf71c47df694c763bd
// Local Build
2020.2.18-preview.0
// Other...
2020.2.18
Во всех случаях я хотел бы получить следующие части
version = 2020.2.18
suffix = preview.0, preview.2 or empty
hash = b5d95e5992d99f6a6eef8faf71c47df694c763bd or empty
Единственная часть, которая должна существовать, это часть версии.
Мое текущее выражение
(?<Version>(?>\d+\.?){3,})(?:-(?<Suffix>.*?))(?:-(?<Hash>[0-9a-f]{5,40}))
Любой намек на то, как я могу сделать суффикс и га sh необязательно?
Я попытался добавить простой ноль или единицу к любому из них, но это не сработало.