我有以下字符指针
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(®ex, "START_MESSAGE*\r\n\r\n", 0);
reti = regexec(®ex, "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, ®ex, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
exit(1);
}
/* Free memory allocated to the pattern buffer by regcomp() */
regfree(®ex);
return 0;
}
但是,我明白了no match
。我想,也许是因为转义序列。所以,我放了\\r\\n\\r\\n
,仍然没有匹配。我寻找原始字符串文字(就像r
python中的字符串之前一样)。但是,我得到
error: stray ‘R’ in program
我尝试删除\r\n\r\n
并只寻找START_MESSAGE
模式,我得到了匹配。我怎样才能\r\n\r\n
被匹配或获取和之间的START_MESSAGE
文本\r\n\r\n
。