0

我有以下字符指针

char message[100] = "START_MESSAGE hello world \r\n\r\n";

我正在尝试使用regex.h来解析上述消息。我想得到介于START_MESSAGE和之间的任何东西\r\n\r\n

所以,我尝试了以下代码(通过遵循THIS SO post 的答案)

#include <stdio.h>
#include <regex.h>
#include <stdlib.h>

int main() {
    regex_t regex;
    int reti;
    char msgbuf[100];

    reti = regcomp(&regex, "START_MESSAGE*\r\n\r\n", 0);
    reti = regexec(&regex, "START_MESSAGE hello world\r\n\r\n", 0, NULL, 0);

    if (!reti) {
        puts("Match");
    } else
    if (reti == REG_NOMATCH) {
        puts("No match");
    } else {
        regerror(reti, &regex, msgbuf, sizeof(msgbuf));
        fprintf(stderr, "Regex match failed: %s\n", msgbuf);
        exit(1);
    }

    /* Free memory allocated to the pattern buffer by regcomp() */
    regfree(&regex);

    return 0;
}

但是,我明白了no match。我想,也许是因为转义序列。所以,我放了\\r\\n\\r\\n,仍然没有匹配。我寻找原始字符串文字(就像rpython中的字符串之前一样)。但是,我得到

error: stray ‘R’ in program

我尝试删除\r\n\r\n并只寻找START_MESSAGE模式,我得到了匹配。我怎样才能\r\n\r\n被匹配或获取和之间的START_MESSAGE文本\r\n\r\n

4

0 回答 0