私の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
を渡そうとしましたし、それもうまくいきませんでした。廃止された基本的な、そしてREG_EXTENED
:POSIXでサポートされている