std::string to std::regex
std::string to std::regex
我正在尝试将字符串转换为正则表达式,字符串如下所示:
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";
但它没有成功,你如何正确地做到这一点?
你可以
用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;
}
https://ideone.com/gyzfCj
这将在发现第一次出现apples<something>oranges
时返回。如果需要匹配整个字符串,请使用 std::regex_match
您应该使用没有[]
的boost::replace_all(term , " " , ".*");
。.*
只是意味着任何字符,以及任意数量的字符。
相关文章:
- C++ std::regex 使用前瞻失败
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 你能防止 std::regex 在无效表达式上抛出异常吗?
- 在VC2015U3上,std::regex比boost::regex慢得多
- 将std::regex设置为静态的好主意吗
- std::regex and dual ABI
- C++11 std::regex后备选项
- 包含在 std::regex 搜索中,使用 std::regex_token_iterator 从 std::sub_m
- std::string references、std::regex和boost::filesystem的基本概念
- std::regex 是否保证了最坏情况下的时间复杂度?
- boost::regex 和std::regex之间的不一致?
- 使用 std::regex 拆分一行并丢弃空元素
- std::string to std::regex
- 用std :: Regex通过DOT解析数字
- C++ [std::regex] 尝试仅匹配中间有空格的数字
- std::regex总是可以识别区域设置吗?
- 是STD :: REGEX构造函数安全
- STD :: Regex不确定的行为
- std::regex对于用户定义的表达式安全吗?
- std::regex来识别多项式方程的系数