我在Windows上使用std :: regex和VS2015 / VS2017。我正在尝试设置一个通用例程来执行搜索搜索以执行用户请求的8个函数:
例程传递上面的类型,关联的字符串,要搜索的字符串,如果搜索区分大小写/不敏感则表示布尔变量,以及是否仅限制搜索整个单词的另一个布尔变量(类型1)仅-6)。我修改了提供的查找字符串,如果"仅整个单词"已指定。
e.g。
void Search(std::wstring sRegex, std::wstring wsString, bool bCaseSensitive, bool bWholeWordsOnly);
但是,我无法像我预期的那样对基本不区分的情况起作用。
这有效:
std::wregex reg;
std::wsmatch m;
if (bCaseSensitive) {
reg.assign(sRegex.c_str(), std::regex::ECMAScript);
} else {
reg.assign(sRegex.c_str(), std::regex::ECMAScript | std::regex::icase);
}
std::regex_search(wsString, m, reg) .....
但这并没有(被忽略而且更糟):
std::wregex reg;
std::wsmatch m;
reg.assign(sRegex.c_str(), std::regex::ECMAScript |
(bCaseSensitive ? 0 : std::regex::icase));
std::regex_search(wsString, m, reg) .....
有人可以解释一下吗?
PS。我还没有编码超过类型1,因为我想在继续之前先解决这个问题。有关&的其他类型的正则表达式字符串的任何建议没有"只有整个单词" (如适用)将非常感激。