我正在使用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。
答案 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++;