Нечувствительное к регистру совпадение с Boost Xpressive
Я просто не могу получить regex_match
функция для поиска регистронезависимых совпадений. Даже если boost::xpressive::regex_constants::icase
определяется, и я использую приведение (так что нет никакой двусмысленности icase
метод Xpressive), я получаю ошибку компиляции (VS2010):
ошибка C2440: "приведение типа": невозможно преобразовать из "const boost::xpressive::detail::modifier_op" в "boost::xpressive::regex_constants::match_flag_type"
Некоторый код для воспроизведения:
#include <stdio.h>
#include <boost/xpressive/xpressive.hpp>
int main(){
std::string str("FOO");
boost::xpressive::sregex re = boost::xpressive::sregex_compiler().compile("foo");
bool result = regex_match(str,re,(boost::xpressive::regex_constants::match_flag_type)boost::xpressive::regex_constants::icase);
if(result){
std::cout << "Match!";
}else{
std::cout << "No match!";
}
return 0;
}
Вы знаете, в чем может быть проблема?
1 ответ
Решение
Попробуй использовать
boost::xpressive::sregex re = boost::xpressive::sregex_compiler().
compile("foo", boost::xpressive::icase);
syntax_options_type
(то есть boost::xpressive::regex_constants::icase_
) не является match_flag_type
(3 аргумента для regex_match
должен иметь этот тип).