Описание тега regex-group

Группы регулярных выражений создаются путем помещения части регулярного выражения в круглые скобки. Группы позволяют применить квантификатор ко всей группе или ограничить чередование частью регулярного выражения. Помимо группировки части регулярного выражения вместе, круглые скобки также создают пронумерованную группу захвата. В скобках хранится часть строки, совпадающая с частью регулярного выражения.

Регулярное выражение Set(Value)? совпадения Set или SetValue. В первом случае первая (и единственная) группа захвата остается пустой. Во втором случае первая группа захвата соответствуетValue.

Если регистрация совпадения не требуется, регулярное выражение можно оптимизировать до Set(?:Value)?. Знак вопроса и двоеточие после открывающей круглой скобки - это синтаксис, который создает группу без захвата.

Вопросительный знак после открывающей скобки не связан с вопросительным знаком в конце регулярного выражения. Последний вопросительный знак - это квантификатор, делающий предыдущий токен необязательным. Этот квантификатор не может появляться после открывающей скобки, потому что в начале группы нет ничего, что можно было бы сделать необязательным. Таким образом, нет никакой двусмысленности между вопросительным знаком как оператором, делающим маркер необязательным, и вопросительным знаком как частью синтаксиса для групп без захвата.