Я экспериментировал с регулярным выражением, пытаясь найти ответ на этот вопрос , и обнаружил, что хотя regex_match
находит совпадение, regex_search
нет.
Следующая программа была скомпилирована с помощью g++ 4.7.1:
#include
#include
int main()
{
const std::string s = "/home/toto/FILE_mysymbol_EVENT.DAT";
std::regex rgx(".*FILE_(.+)_EVENT\\.DAT.*");
std::smatch match;
if (std::regex_match(s.begin(), s.end(), rgx))
std::cout << "regex_match: match\n";
else
std::cout << "regex_match: no match\n";
if (std::regex_search(s.begin(), s.end(), match, rgx))
std::cout << "regex_search: match\n";
else
std::cout << "regex_search: no match\n";
}
Выход:
regex_match: match regex_search: no match
Является ли мое предположение, что оба должны совпадать, неверно, или может быть проблема с библиотекой в GCC 4.7.1?