[C] 纯文本查看 复制代码#include #include #include int main() { char *pattern = "^([4-9]\\d|[3-9]\\d\\.\\d|50\\.0)$"; char *input = "45.6"; regex_t regex; int ret; ret = regcomp(®ex, pattern, REG_EXTENDED); if (ret) { printf("Could not compile regex\n"); exit(1); } ret = regexec(®ex, input, 0, NULL, 0); if (!ret) { printf("Input matches regex\n"); } else if (ret == REG_NOMATCH) { printf("Input does not match regex\n"); } else { char error_msg[100]; regerror(ret, ®ex, error_msg, sizeof(error_msg)); printf("Regex match failed: %s\n", error_msg); } regfree(®ex); return 0; }
surpasser 发表于 2023-2-25 18:59 [mw_shl_code=c,true]#include #include #include 我这样粘贴进去不对呢!求代码大神帮忙,应该如何弄,感谢感谢
jacking19 发表于 2023-2-25 19:08 我这样粘贴进去不对呢!求代码大神帮忙,应该如何弄,感谢感谢 ^(?:[4-9]\d|[3-9])(?:\.\d+)?$ 上面是一个正则表达式,可以匹配37.3到50.0之间的整数和小数,且首位数不能是0 在C语言中,可以使用标准库函数regcomp和regexec来编译和执行正则表达式。以下是一个例子: [C] 纯文本查看 复制代码#include #include int main() { char *pattern = "^(?:[4-9]\\d|[3-9])(?:\\.\\d+)?$"; char *input = "42.5"; regex_t regex; int ret = regcomp(®ex, pattern, REG_EXTENDED); if (ret) { printf("Failed to compile regular expression\n"); return 1; } ret = regexec(®ex, input, 0, NULL, 0); if (ret == 0) { printf("Matched!\n"); } else if (ret == REG_NOMATCH) { printf("Not matched!\n"); } else { printf("Failed to execute regular expression\n"); return 1; } regfree(®ex); return 0; } 上面的代码将输出Matched!,因为输入字符串42.5符合正则表达式的规则。如果你将输入改成30.0,则输出将是Not matched!,因为这个数字不在允许的范围内。
请大神请你在看看呢!我测试了还是不对 【https://tool.oschina.net/regex】 这个是在线测试的地址! 我用的就是^(?:[4-9]\d|[3-9])(?:\.\d+)?$ ,感谢感谢