VS 2012中的简单regex_match无法正常工作

时间:2015-04-02 04:26:26

标签: c++ regex visual-studio-2012

我正在使用VS 2012 C ++。以下简单的regex_match找不到我想要的东西。我已将其剥离到以下内容。我错过了什么?

#include <string>
#include <regex>
using namespace std;

int _tmain( int argc, char *argv[] )
{
   int i = 0;
   auto matches = smatch();
   regex rx( "." );
   string haystack( "ABC." );

   if( regex_match( haystack, matches, rx ) )
      i++;
   if( regex_match( haystack, rx ) )
      i++;
   if( regex_match( haystack.begin(), haystack.end(), rx ) )
      i++;
}

regex_match始终返回false。

1 个答案:

答案 0 :(得分:1)

您应该使用regex_search

  

请注意,regex_match只会成功匹配常规   表达式为整个字符序列,而std :: regex_search   将成功匹配子序列。

因此,此代码将找到匹配项:

if( regex_search( haystack, matches, rx ) )
   i++;
if( regex_search( haystack, rx ) )
   i++;
if( regex_search( haystack.begin(), haystack.end(), rx ) )
   i++;