이것은 매우 간단해야하지만 C의 regex.h 라이브러리에서 '+'의 기본 작업을 이해하는 데 문제가 있습니다. 무엇이 잘못 될지 확실하지 않습니다.Posix Regex 라이브러리에서 +를 사용하는 경우
작동하지 않는 샘플 코드 붙여 넣기. 나는 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;
}
이 경기를 찾을 수없는,하지만 난 할 수없는 나는 B를 사용하려면 B 하나 개 이상의 발생이있을 수 있습니다 이유를 이해하십시오.
^BB * A $의 사용법은 정상적으로 작동하지만, 원하는 것은 아닙니다. BBBA 나 CCCCA 또는 DDDDA와 일치해야하는^[BCD] + A $와 같은 것을 확인하고 싶습니다.^[BCD] [BCD]의 사용 * 원하는 일치하지 않는 BCCCA와 일치 할 수 있으므로 절대로 실망하지 마십시오. 표현식에 괄호와 괄호를 사용하려고했으나 도움이되지 않습니다.
빠른 도움을 주시면 감사하겠습니다.
POSIX regex는 GNU grep이 받아 들일 수 있습니까? 왜냐하면 메타 문자로'+'(또는'?')를 다루지 않기 때문에 백 슬래시로 이스케이프하거나'-E'로 "확장 정규 표현식"을 켜야합니다. –
점프에 감사드립니다. 귀하의 의견과 Alp의 답변을 바탕으로 코드를 수정합니다. – shyam2347