gpt4 book ai didi

c - C语言正则表达式匹配字符串(忽略大小写)

转载 作者:行者123 更新时间:2023-12-04 01:03:45 24 4
gpt4 key购买 nike

这是我的代码:

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

int main(void)
{
char name[]= "Michael Corleone";
char inputName[40];

regex_t regex;
int return_value;

printf("Enter name: ");
fgets(inputName, sizeof(inputName), stdin);
// Remove new line from fgets
inputName[strcspn(inputName, "\n")] = 0;

// Regcomp string input by user as pattern
return_value = regcomp(&regex, inputName, 0);
// Regexec string that will match against user input
return_value = regexec(&regex, name, 0, NULL, 0);

if (return_value == REG_NOMATCH)
{
printf("Pattern not found.\n");
return 1;
}
else
{
printf("%s\n", name);
}
}

我尝试使用正则表达式匹配字符串。如您所见,我的代码运行良好。数组中有一个名为 Michael Corleone 的人物存储。然后,当用户尝试输入:MichaelCorleoneMichael Corleone 时,它将匹配并打印全名!

但问题是区分大小写。如果用户尝试以小写输入这些名称,它将失败。

我尝试在 regcomp 中使用它:regcomp(&regex, "[a-zA-Z][inputName]", 0); 当我尝试时它有效以小写形式键入名称。但后来我发现,当我输入另一个名字如 JohnLeonAngel 时它也有效。所以,我认为它匹配所有字母。

请问各位有解决办法吗?谢谢!

最佳答案

您需要将 regcomp 函数的最后一个参数(现在是 0)替换为 REG_ICASE:

return_value = regcomp(&regex, inputName, REG_ICASE); // 0 replaced with REG_ICASE

参见 C demo .

来自regcomp documentation :

REG_ICASE
Do not differentiate case. Subsequent regexec() searches using this pattern buffer will be case insensitive.

关于c - C语言正则表达式匹配字符串(忽略大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67233806/

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