私はこの質問に答えようとして正規表現を試していましたが、一致するものは見つかりました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 のライブラリに問題があるのでしょうか?