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