поиск и замена с использованием regex_replace

#c #regex #stl #boost-xpressive

#c #регулярное выражение #stl #boost-xpressive

Вопрос:

У меня есть строка для поиска

 QString sObjectName = "looolok"
  

regex_search для «.?o» приводит к 3 совпадающим текстам, которые я помещаю в векторный matchedText

 "lo" "oo" "lo"
  

Теперь я заменяю текст на «o»
Итак, я бы ожидал, что str будет изменен на

 oook
  

Я использую boost xpressive regex_replace для этой операции. Это мой код

 std::vector<QString>::iterator it = matchedText.begin();
wsregex regExp;
std::string strOut;
std::string::iterator itStr = strOut.begin(); ;
for( ; it != matchedText.end();   it )
 {
     regExp = wsregex::compile( (*it).toStdWString() );
     boost::xpressive::regex_replace( itStr, sObjectName.begin(), sObjectName.end(), regExp, qReplaceBy.toStdString(), regex_constants::format_perl );
 }
  

Однако strOut содержит ooook.
Чего мне не хватает?

Комментарии:

1. "?o" кажется недопустимым, вы имели в виду ".?o" ?

2. @Jarod42 да, мы обрабатываем это внутренне таким образом

3. Есть четыре совпадения; есть два вхождения «oo», которые совпадают.

4. @IgorTandetnik я использовал regex101.com использование регулярного выражения php