В чем разница между использованием регулярного выражения в C++ и C? Ниже приведен код C++ 11, и ответ, когда я запускаю этот код, является «несоответствие», но для кода C он «соответствует».В чем разница между C++ и C regex
Существуют ли какие-либо правила или документы, которые точно описывают эти различия?
C++ код:
#include <regex>
#include <stdio.h>
using namespace std;
int main()
{
const std::regex re("^@hithere");
std::smatch match;
std::string str ("@hithere");
if(std::regex_match(str, match,re) && match.size()>1)
{
printf("match\n");
}
else
{
printf("mismatch\n");
}
}
output: mismatch
код C:
#include <regex.h>
#include <stdio.h>
int main()
{
int reti;
regex_t regex;
reti = regcomp(®ex, "^@hithere", REG_EXTENDED);
if(!reti)
{
printf("compile success\n");
}
reti = regexec(®ex, "@hithere", 0, NULL, 0);
if(!reti)
{
printf("match\n");
}
else
{
printf("mis match\n");
}
}
output:match
Это две различные реализации регулярных выражений. '' определяется POSIX (не по ISO C); '' определяется ISO C++. –