내 C 코드에서 정규 표현식을 사용하여 읽고있는 텍스트 파일의 각 행에서 문자열을 찾고, \b
경계가 그 것처럼 보입니다. 작동하지. 그 문자열은 더 큰 문자열의 일부가 될 수 없습니다. 나는 또한 다음과 그것뿐만 아니라 내 코드에서 작동 만들 수 없습니다 (소스 here)에서 일부 손으로 쓴 경계 발현 시도가 실패 후표현식에서 b를 사용할 때 C에서 regexec이 일치하지 않습니다.
:
(?i)(?<=^|[^a-z])MYWORDHERE(?=$|[^a-z])
을하지만, 내가 좋아하는 a
을 간단하게 뭔가를하려고 할 때 정규식으로 예상되는 것을 찾습니다.
가 여기 내 단축 코드 조각입니다 다음 regcomp
기능에
#include <regex.h>
void readFromFile(char arr[], char * wordToSearch) {
regex_t regex;
int regexi;
char regexStr [100];
strcpy(regexStr, "\\b(");
strcat(regexStr, wordToSearch);
strcat(regexStr, ")\\b");
regexi = regcomp(®ex, regexStr, 0);
printf("regexi while compiling: %d\n", regexi);
if (regexi) {
fprintf(stderr, "compile error\n");
}
FILE* file = fopen(arr, "r");
char line[256];
while (fgets(line, sizeof(line), file)) {
regexi = regexec(®ex, line, 0, NULL, 0);
printf("%s\n", line);
printf("regexi while execing: %d\n", regexi);
if (!regexi) {
printf("there is a match.");
}
}
fclose(file);
}
, 나는 또한 플래그와 REG_EXTENDED
을 통과 시도하고 또한 작동하지 않았다. POSIX 지원