gpt4 book ai didi

c++ - 在 C++11 正则表达式中有条件地忽略大小写

转载 作者:搜寻专家 更新时间:2023-10-31 00:53:36 26 4
gpt4 key购买 nike

我正在尝试编写一个函数,允许用户指定他们是否要在正则表达式匹配中忽略大小写。我想出了一个解决方案,但它很笨重。有没有办法在构建正则表达式时有条件地设置 std::regex_constants::icase 标志?

#include <string>
#include <regex>

std::string sub(std::string string, std::string match, bool ic){
std::regex r;
std::regex rc(match, std::regex_constants::collate);
std::regex ric(match, std::regex_constants::icase | std::regex_constants::collate);
if(ic){
r = ric;
} else {
r = rc;
}
std::smatch matches;
if(std::regex_search(string,matches, r)){
return matches[0];
} else {
return "no match";
}
}

最佳答案

有很多方法可以有条件地设置标志。例如使用条件运算符:

std::regex r(match, ic ? std::regex_constants::icase | std::regex_constants::collate
: std::regex_constants::collate);

关于c++ - 在 C++11 正则表达式中有条件地忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48215227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com