Ich verwende den folgenden C++ - Code mit VS2013 Update 4 und VS2015 Update 3 mit einem Zeichenbereich zu versuchen passen unsensibel Fall und die Vorkommen zu ersetzen::: std :: regex_replace mit Syntaxflag icase unter Windows (VS2013 Update 4, VS2015 Update 3) passt nicht mit Zeichenbereichen
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;
ich die Ausgabe erwartet:
Source: "Hallo Welt, HALLO WELT"
Result: "Hello Welt, Hello WELT"
Aber ich bekomme:
Source: "Hallo Welt, HALLO WELT"
Result: "Hello Welt, HALLO WELT"
Warum wurde der Zeichenbereich nicht casinsensitiv angewendet? Warum wurde das zweite Spiel nicht gefunden und ersetzt?