C ++正则表达式无法与PCRE表达式一起工作?

时间:2015-02-09 20:04:53

标签: c++ regex

我有以下代码:

  include <regex>
  include <string>
  TCHAR basePath[MAX_PATH];
  GetCurrentDirectory(MAX_PATH, basePath);

  wstring test(&basePath[0]); //convert to wstring
  string test2(test.begin(), test.end()); //and convert to string.

  std::regex rBase("(.*my-dir)");
  std::smatch sm;
  std::regex_match(test2, sm, rBase);

但是,sm总是返回空

基本上,如果我有以下目录结构:

E:\foo\bar\baz\my-dir\post1\dir2

我需要返回

"E:\foo\bar\baz\my-dir"

如果我运行它,比如说python或者javascript,那么正则表达式似乎有效,但是在C ++中没有这样做

我缺少什么或有什么替代方案?

由于

1 个答案:

答案 0 :(得分:1)

std::regex_match检查整个字符串是否与正则表达式匹配,而不仅仅是它的任何部分。

使用std::regex_search代替std::regex_match或使用与整个字符串匹配的正则表达式,例如"(.*my-dir).*",并使用sm[1].str()提取子匹配。