У меня есть код C ++, который работает как модуль Nginx и исполняется при получении запросов nginx. Этот код при запуске в модульном тесте C ++ ведет себя как ожидалось, и я вижу, что «res True i 51 для первого повторного вывода» печатается. Однако, когда он выполняется на сервере nginx. Вместо этого выполняется отладка «res False i 51» он должен соответствовать регулярному выражению и печатать «res True i 51». Почему это регулярное выражение не работает при запуске в nginx.
#include <pcrecpp.h>
pcrecpp::RE re("Chrom[^ \\/]+\\/(\\d+)[\\.\\d]* ");
int i = 0;
bool res = re.PartialMatch("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.3987.66 Safari/537.36", &i);
if (res == true) {
if ( i == 51 ) {
ctx->logger->log(Logger::Info, "res True i 51 \n");
cout << "res True i 51\n";
}
} else {
ctx->logger->log(Logger::Info, "res False i 51\n");
cout << "res False i 51\n";
}