2015-12-09 3 views
1

Предположим, у меня есть этот простой регулярное выражение поиска кусок кода:Как узнать, захвачена ли какая-либо необязательная часть регулярного выражения?

boost::regex re("(\\d+)(/(\\d))?"); 
boost::smatch matches; 
boost::regex_search(input_str, matches, re); 

Он ищет строку на что-то вроде 123/2 или 123. Вторая цифра и/являются необязательными.
Я хочу знать, что если /2 присутствует или нет, и если он существует, установите второе число после/в переменную или установите переменную равным -1 в противном случае.
Я попытался использовать matches.size(), но это всегда одно и то же значение, независимо от того, существует ли вторая часть или нет.

ответ