linux c语言使用正则表达式从字符串“here:GET /api/shortcut?enable=1 HTTP/1.1”取出“enable=”后面的数字
时间: 2023-12-16 11:05:29 浏览: 139
可以使用regex库来实现正则表达式的匹配和提取。以下是一个示例代码:
```c
#include <stdio.h>
#include <regex.h>
int main(void) {
char *str = "here:GET /api/shortcut?enable=1 HTTP/1.1";
regex_t regex;
regmatch_t match[2];
// 编译正则表达式
int ret = regcomp(®ex, "enable=([0-9]+)", REG_EXTENDED);
if (ret != 0) {
printf("regcomp error\n");
return 1;
}
// 匹配字符串
ret = regexec(®ex, str, 2, match, 0);
if (ret == 0) {
// 提取数字
char enable[match[1].rm_eo - match[1].rm_so + 1];
snprintf(enable, sizeof(enable), "%.*s", match[1].rm_eo - match[1].rm_so, str + match[1].rm_so);
printf("enable=%s\n", enable);
} else if (ret == REG_NOMATCH) {
printf("no match\n");
} else {
printf("regexec error\n");
return 1;
}
// 释放正则表达式
regfree(®ex);
return 0;
}
```
运行结果为:
```
enable=1
```
正则表达式"enable=([0-9]+)"中,"[0-9]+"表示匹配一个或多个数字,"()"表示将这个部分作为一个子匹配,方便后面提取数字。执行regexec函数后,如果匹配成功,可以根据match数组中的rm_so和rm_eo字段来提取子匹配的内容。
阅读全文