這應該很簡單,但是我很難理解在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