我有一个看起来像这样的函数:
bool ExpandWildCard(vector<string>& names, vector<string>& result, string& wildcard)
{
}
在这里,我想将 wildcard
与 vector names
中的每个元素进行匹配,如果匹配,则将元素添加到 names
中> 到 result
vector 。
当然,如果通配符是 *,我可以只添加从 names
到 results
的所有内容。另外,我现在只是尝试实现 *
通配符。
我如何在 C++ 中执行此操作?
我想到的一种方法是使用 find()
算法,但我不确定我是否会使用它来匹配通配符?
最佳答案
看起来您正在寻找 std::copy_if 的某种组合也许std::regex_match :
bool ExpandWildCard(vector<string>& names, vector<string>& result, string& wildcard) {
auto oldsize = result.size();
std::copy_if(std::begin(names), std::end(names),
std::back_inserter(result),
[&](string const& name) {
return std::regex_match(name, make_regex(wildcard));
}
);
return (result.size() > oldsize);
}
make_regex 是您需要实现的将字符串转换为 std::regex
的函数。
关于c++ - vector 中每个元素的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120547/