我正在尝试使用正则表达式来回答这个问题,并发现regex_match
可以找到匹配项,但regex_search
不能。
下面的程序是使用g++ 4.7.1编译的:
#include <regex>
#include <iostream>
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: 匹配 regex_search: 不匹配
我的假设认为两者都应该匹配是错的,或者在GCC 4.7.1库中可能存在问题吗?
<regex>
库?),因此我倾向于说,是该库存在问题。 - R. Martinho Fernandes