регулярное выражение на языке C для извлечения версии chrome из пользовательского агента - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь написать код C с библиотекой regex.h, который может узнать версию Chrome от пользовательского агента. Я пытаюсь ниже

regex_t re;
regmatch_t pm;

if(regcomp(&re, "Chrom[^ \\/]+\\/(\\d+)[\\.\\d]* ", 0) != 0) {
    cout << "C - Invalid Regex\n";
    return;
} else {
    cout << "C - valid Regex\n";
}

if ( regexec(&re, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.3987.66 Safari/537.36", 1, &pm, 0) == 0 ) {
    cout << "Match Found !!" << "start location: " << pm.rm_so << "end location: " << pm.rm_eo << "\n";
} else {
    cout << "Match Not Found\n";
}
regfree(&re);

, но это не работает и выдает «Соответствие не найдено». Чего мне не хватает?

1 Ответ

2 голосов
/ 16 февраля 2020

Попробуйте:

regcomp(&re, "Chrome\\/[0-9]+[.[0-9]+]*", REG_EXTENDED)

Подробнее о regex.h можно узнать здесь: https://pubs.opengroup.org/onlinepubs/7908799/xsh/regex.h.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...