Вам нужно немного изменить способ группировки снимков.Вам нужно удалить точку из группы baseBranch (конечно) и изменить базовую группу ветви на это регулярное выражение,
(?<baseBranch>\d+(?:\.\d+)+)
, которое в основном захватывает первую цифру, а затем рекурсивно ожидает данные формы \.\d+
один или несколько.
Ваше регулярное выражение после изменения становится
^(?<curBranch>(?:(?<baseBranch>\d+(?:\.\d+)+)\.)?\d+\.)(?<curRevision>\d+)$
Демо
Дайте мне знать, если это то, что вынеобходимо.И если да, то дайте мне знать, если вы хотите, чтобы я добавил объяснение к этому регулярному выражению.
Редактировать: Для заостренных отрицательных тестовых примеров
Вы можете использовать это регулярное выражениедля сопоставления ваших новых случаев, которые будут совпадать, только если группа baseBranch имеет четное число (включая 0, например, 2, 4, 6 и т. д.) чисел, разделенных точками.
^(?<curBranch>(?:(?<baseBranch>\d+\.\d+(?:(?:\.\d+){2})*)\.)?\d+\.)(?<curRevision>\d+)$
Это регулярное выражение будет соответствовать, есливесь ввод имеет четное число чисел, разделенных точкойСледовательно, они будут соответствовать,
1.36.1.5
1.31
1.14.2.21.1.16.1.13
1.31.34.2.4.4.5.6
Но они не совпадают, так как это нечетное число чисел
1.31.34
1.31.34.2.4
1.31.34.2.4.4.5
Демо для обновленного и лучшего регулярного выражения