[英]C++ boost::regex_match strange behaviour
嘗試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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.