gpt4 book ai didi

c - 使用 regex 在 C 中设置正确的正则表达式时出现问题

转载 作者:行者123 更新时间:2023-12-02 18:40:31 24 4
gpt4 key购买 nike

我想匹配以一组字符 a-z 开头,然后是一个 : 和另一组字符 a-z 开头的所有字符串> 就在那之后。

作为示例,字符串 "an:example" 将是正确的匹配。

另一个例子,“another:ex:ample” 需要不匹配。

我尝试过这样设置,但它匹配所有内容,即使我将错误的字符串作为输入:(

所以我的正则表达式是 "[a-z]:[a-z]" 但它将字符串 "1an:example" 计算为匹配:/

我怎样才能正确地做到这一点?

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

int main() {
regex_t regex;
int retis;
char* str = "1an:example";

retis = regcomp(&regex, "[a-z]:[a-z]", 0);
retis = regexec(&regex, str, 0, NULL, 0);

if(!retis) {
puts("Match");
}
else if(retis == REG_NOMATCH) {
puts("No match");
}

regfree(&regex);
return 0;
}

最佳答案

你需要

retis = regcomp(&regex, "^[a-z]+:[a-z]+$", REG_EXTENDED);

请参阅C online demo .

即:

  • ^(字符串开头)和 $(字符串结尾)是 anchors要求正则表达式匹配整个字符串
  • [a-z]+ 匹配一个或多个小写字母
  • REG_EXTENDED 允许扩展正则表达式语法,例如在 regex.h 中,需要启用 $ anchor 。

关于c - 使用 regex 在 C 中设置正确的正则表达式时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68059068/

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