Я использую следующий код C++ с обновлением V2 VS2013 и обновлением VS2015 3 с использованием диапазона символов, чтобы попробовать чтобы соответствовать случай нечувствительно и заменить вхождения::: std :: regex_replace с синтаксическим флагом icase в Windows (обновление VS2013 4, обновление VS2015 3) не соответствует диапазонам символов
std::wstring strSource(L"Hallo Welt, HALLO WELT");
std::wstring strReplace(L"ello");
std::regex_constants::syntax_option_type nReFlags =
std::regex::ECMAScript |
std::regex::optimize |
std::regex::icase;
std::wregex re(L"[A]LLO", nReFlags);
std::wstring strResult = std::regex_replace(strSource, re, strReplace);
wcout << L"Source: \"" << strSource.c_str() << L"\"" << endl
<< L"Result: \"" << strResult.c_str() << L"\"" << endl;
Я ожидал, что выход:
Source: "Hallo Welt, HALLO WELT"
Result: "Hello Welt, Hello WELT"
Но я получаю:
Source: "Hallo Welt, HALLO WELT"
Result: "Hello Welt, HALLO WELT"
Почему диапазон символов не получил применение caseinsensitive? Почему второй матч, похоже, не найден и его заменили?