我正在尝试将字符串转换为正则表达式,字符串看起来像这样:
std::string term = "apples oranges";
我希望regex
为term
,所有空格都替换为任何字符和任意长度的字符,我认为这可能有用:
boost::replace_all(term , " " , "[.*]");
std::regex rgx(s_term);
所以std::regex_search
term
在查看时会返回true:
std::string term = "apples pears oranges";
但它没有成功,你怎么做到这一点?
答案 0 :(得分:2)
您应该使用没有boost::replace_all(term , " " , ".*");
的{{1}}。 []
只表示任何字符及其中任意数字。
答案 1 :(得分:2)
您可以使用basic_regex
执行所有操作,无需boost
:
#include <iostream>
#include <string>
#include <regex>
int main()
{
std::string search_term = "apples oranges";
search_term = std::regex_replace(search_term, std::regex("\\s+"), ".*");
std::string term = "apples pears oranges";
std::smatch matches;
if (std::regex_search(term, matches, std::regex(search_term)))
std::cout << "Match: " << matches[0] << std::endl;
else
std::cout << "No match!" << std::endl;
return 0;
}
当找到apples<something>oranges
的第一次出现时,将返回此值。如果您需要匹配整个字符串,请使用std::regex_match