尝试boost :: regex_match并得到了奇怪的行为。
boost::cmatch what;
std::string fn_re_str = R"(\.sig\|\|([a-zA-Z0-9$]+)\()";
boost::regex fn_re(fn_re_str);
if (boost::regex_match("{var d=a[c];if(d.sig||d.s){var e=d.sig||qt(d.", what, fn_re)) {
std::cout << what[1] << std::endl;
} else {
std::cerr << "not found" << std::endl;
}
qt
有望被发现。
在这里找到https://regex101.com/r/iR9rW5/1。
为什么boost :: regex_match找不到它?我想念什么吗?
regex_match
仅匹配完整输入:文档
⚠重要
注意,仅当表达式与整个输入序列匹配时,结果才为true。如果要在序列中的某个位置搜索表达式,请使用
regex_search
。如果要匹配字符串的前缀,请regex_search
与标志match_continuous
集一起使用
使用 regex_search
#include <boost/regex.hpp>
#include <iostream>
int main() {
boost::cmatch what;
std::string fn_re_str = R"(\.sig\|\|([a-zA-Z0-9$]+)\()";
boost::regex fn_re(fn_re_str);
if (boost::regex_search("{var d=a[c];if(d.sig||d.s){var e=d.sig||qt(d.", what, fn_re)) {
std::cout << what[1] << std::endl;
} else {
std::cerr << "not found" << std::endl;
}
}
印刷
qt
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句