C实现 2024-09-24T08:35:11Z 正则表达式取里面的数字
时间: 2024-09-24 11:29:21 浏览: 66
在C语言中,正则表达式处理通常依赖于外部库,比如`regex.h`(在某些系统上称为`libre2`或`PCRE`)。如果你想从特定时间戳(如 "2024-09-24T08:35:11Z")中提取数字部分,可以使用正则表达式匹配。
首先,你需要包含`regex.h`头文件并初始化一个正则表达式模式。假设我们要提取的是四位数的时间戳部分,你可以这样做:
```c
#include <stdio.h>
#include <regmatch.h>
#include <regex.h>
char timestamp[] = "2024-09-24T08:35:11Z";
const char* pattern = "[0-9]{4}"; // 正则表达式模式,匹配四位数字
// 初始化正则表达式
regex_t regex;
if (regcomp(®ex, pattern, REG_EXTENDED) != 0) {
perror("Error compiling regular expression");
exit(1);
}
// 查找并提取数字
smatch result;
size_t length = regexec(®ex, timestamp, 1, &result, 0);
if (length == 0) {
const char* match = (char*)result[0].rm_so; // 提取匹配区域的起始位置
const char* end = (char*)result[0].rm_eo; // 提取匹配区域的结束位置
printf("Timestamp number: %s", match + 4); // 加4是因为前面有"-0"前导,实际数字从第5位开始
} else {
printf("No match found\n");
}
// 清理
regfree(®ex);
```
这个示例只会找到第一个四位数字。如果要提取完整的日期部分(例如“2024”),则将pattern改为"[0-9]{4}"。
阅读全文