这应该很简单,但是我很难理解在C中的regex.h库中'+'的基本工作。不知道发生了什么问题。Posix正则表达式库+的用法
粘贴不起作用的示例代码。我想找到与B开始和一个结尾的字符串,可以有B的不止出现一次,所以我想用B +
int main(int argc, const char * argv[])
{
regex_t regex;
int reti;
/* Compile regular expression */
reti = regcomp(®ex, "^B+A$", 0);
if(reti)
{
printf("Could not compile regex\n");
exit(1);
}
/* Execute regular expression */
reti = regexec(®ex, "BBBA", 0, NULL, 0);
if (!reti)
{
printf("Match\n");
}
else if(reti == REG_NOMATCH)
{
printf("No match\n");
}
else
{
printf("Regex match failed\n");
exit(1);
}
/* Free compiled regular expression if you want to use the regex_t again */
regfree(®ex);
return 0;
}
这没有找到比赛,但我不能理解为什么。
^BB *的使用效果很好,但那不是我想要的。 因为我也想检查一下^ [BCD] + A $,它应该与BBBA或CCCCA或DDDDA相匹配。^[BCD] [BCD] * A $的用法不适用于我,因为它可能与BCCCA不匹配。 尝试在表达式中使用括号和括号,但它似乎没有帮助。
快速的帮助是非常感谢。
是GNU'grep'接受的POSIX正则表达式吗?因为它不会将'+'(或'?'作为元字符)作为元字符 - 您必须用反斜杠将它们转义,或使用'-E'打开“Extended Regular Expressions”。 –
感谢您的加入。我会根据您的意见和Alp的回答修改代码。 – shyam2347