gpt4 book ai didi

c - 正则表达式在 C 中失败,在线测试通过

转载 作者:行者123 更新时间:2023-12-02 07:17:40 25 4
gpt4 key购买 nike

当我在 C 中使用它时,应该工作的正则表达式失败了。

当我在此处粘贴此正则表达式时 - https://regex101.com并测试它似乎正常,正如预期的那样。

//clang 3.8.0

#include <stdio.h>
#include <regex.h>

int main(void)
{
char *regPatt = regPatt = "^HR(\\d{2})$";
regex_t regex;
short retval = regcomp (&regex, regPatt, 0);
short status = regexec (&regex, "HR16", (size_t) 0, NULL, 0);

printf ("%hd", status);

regfree (&regex);
}

所以,在线测试工作正常。

正则表达式 - ^HR(\d{2})$

字符串 - HR16

https://regex101.com例如,一切都很好,我得到了匹配。

在我的代码中,它失败了。用 printf() 打印的值是 1 (REG_NOMATCH)。

编辑 - 可以在此处粘贴代码进行测试:https://rextester.com/l/c_online_compiler_gcc

最佳答案

您应该使用 [0-9] 而不是 \d 并将 REG_EXTENDED 传递给 regcomp 函数.

REG_EXTENDED
Use POSIX Extended Regular Expression syntax when interpreting regex. If not set, POSIX Basic Regular Expression syntax is used.

这是 updated code :

#include  <stdio.h>
#include <regex.h>

int main(void)
{
char *regPatt = regPatt = "^HR([0-9]{2})$";
regex_t regex;
short retval = regcomp (&regex, regPatt, REG_EXTENDED);
short status = regexec (&regex, "HR16", (size_t) 0, NULL, 0);
printf ("%hd", status);
regfree (&regex);
}

关于c - 正则表达式在 C 中失败,在线测试通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56904788/

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