C编程-如何匹配字符串的结束字符?
如何匹配字符串的结束字符 这是我的密码:C编程-如何匹配字符串的结束字符?,c,regex,C,Regex,如何匹配字符串的结束字符 这是我的密码: int ownRegex(char* str_request, char* str_regex) { int err; regex_t preg; err = regcomp(&preg, str_regex, REG_NOSUB | REG_EXTENDED); if (!err) { int match; match = regexec(&preg, str_request, 0, NULL, 0);
int ownRegex(char* str_request, char* str_regex) {
int err;
regex_t preg;
err = regcomp(&preg, str_regex, REG_NOSUB | REG_EXTENDED);
if (!err) {
int match;
match = regexec(&preg, str_request, 0, NULL, 0);
regfree(&preg);
if (!match)
return 0;
else if (match == REG_NOMATCH)
return match;
else {
char *text;
size_t size;
size = regerror(err, &preg, NULL, 0);
text = malloc(sizeof(*text) * size);
if (text) {
regerror (err, &preg, text, size);
fprintf(stderr, "%s\n", text);
free(text);
} else
fprintf(stderr, "im");
exit(errno);
}
}
return err;
}
我想做的是匹配这些行:
“GET/HTTP/1.1”或“GET/HTTP/1.0”,因此我使用正则表达式“^GET/HTTP/1\[01]$”
因为我不想在HTTP版本后面加一个寄生词,比如“GET/HTTP/1.1blabla”
但是当我使用这个正则表达式时,我没有一行尝试匹配
[编辑]
下面是我如何调用我的函数:
int match = ownRegex(clientMessage, "^GET / HTTP/1\\.[01]$");
if (match)
printf("400\n");
else
printf("200\n");
(我简化了代码)
下面是我试过的台词:
`
感谢您阅读我的文章,并为我的英语感到抱歉。已解决 嗯,多亏@WiktorStribiżew让我意识到了一些事情,我的字符数组总是以'\r\n'或'\n'结尾,而不仅仅是'\0'像文字字符串一样 所以我不得不修改我的正则表达式:
match=ownRegex(clientMessage,“^GET/HTTP/1\\[01]\r{0,1}\n”)代码>
再见。显示您在C代码中使用的正则表达式字符串。请回答您的问题并显示一个。您既没有显示正则表达式,也没有显示要匹配的文本。是的,您解释了它是什么,但您必须向我们展示执行此操作的代码。“^GET/HTTP/1\\\[01]$”
应该可以。您也可以使用“^GET/HTTP/1[.][01]$”
是否可以修改第一次打印以输出实际的匹配值,并将其显示给我们?这似乎有效-