gpt4 book ai didi

c - regexec() 无法匹配模式

转载 作者:行者123 更新时间:2023-11-30 16:57:28 25 4
gpt4 key购买 nike

我正在尝试使用以下正则表达式匹配“sdb-iof-pool 1008.56M 884K”等字符串:^(.*)([\s]+)([-+]?[0-9 ]*\.?[0-9]+)([K|M|G|T|P]{1})([\s]+)([-+]?[0-9]*\.? [0-9]+)([K|M|G|T|P]{1})(.*)$

我的c代码如下:

int reti;
regex_t regex;
size_t maxGroups = 8;
regmatch_t groupArray[maxGroups];
const char * pattern = "^(.*)([\\s]+)([-+]?[0-9]*\\.?[0-9]+)([K|M|G|T|P]{1})([\\s]+)([-+]?[0-9]*\\.?[0-9]+)([K|M|G|T|P]{1})(.*)$";
reti = regcomp(&regex, pattern, REG_EXTENDED);
if (reti) {
regerror(reti, &regex, log_buffer, IOF_MAX_MSG);
snprintf(error, IOF_MAX_MSG, "%s: Failed to compile regex '%s': (%d) '%s'", __FUNCTION__, pattern, reti, log_buffer);
return FAIL;
}
reti = regexec(&regex, cmd_output, maxGroups, groupArray, 0);
if (reti == REG_NOMATCH) {
regerror(reti, &regex, log_buffer, IOF_MAX_MSG);
regfree(&regex);
snprintf(error, IOF_MAX_MSG, "Failed to match regex '%s' on '%s': %s", pattern, cmd_output, log_buffer);
return FAIL;
}
regfree(&regex);

尽管像 this 这样的工具似乎确认正则表达式工作正常,我的程序返回:“无法匹配正则表达式 '^(.)([\s]+)([-+]?[0-9].?[0-9]+)([K|M| G|T|P]{1})([\s]+)([-+]?[0-9].?[0-9]+)([K|M|G|T| P]{1})(.)$' 在 'sdb-iof-pool 1008.56M 884K' 上:不匹配”

最佳答案

在使用带有选项“-E”的实用程序“grep”进行扩展正则表达式的多次尝试和错误之后,并通过阅读该实用程序的手册,我怀疑字符类 [\s] 是罪魁祸首。 POSIX 语法无法识别字符类 [\s]。必须使用 [:space:] 来代替。

关于c - regexec() 无法匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39513857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com