ディレクトリの内容を一覧表示するときに、いくつかの種類のディレクトリとファイルを除外する式を作成しようとしています。つまり、現在のディレクトリ (.)、上位ディレクトリ (..)、隠しファイル、およびその他のより具体的なディレクトリを一覧表示することは避けたいと考えています。
これは私が今持っているものです:
[\\.+]|cgi-bin|recycle_bin
ただし、.
、..
、 recycle_bin にも. にも一致しませんcgi-bin
。|
すべてのオペランド を削除し、式を only のままにすると、機能します ( 、などに[\\.+]
一致します)。私はかなり確信しているので、これは奇妙です= OR。私は何かが恋しいですか?.
..
|
更新 1: 私が使用するコードは次のとおりです。
regex_t regex;
int reti;
char msgbuf[100];
/* Compile regular expression */
reti = regcomp(®ex, "[\\.+]|cgi-bin|recycle_bin", 0);
if( reti )
{
fprintf(stderr, "Could not compile regex\n");
exit(1);
}
reti = regexec(®ex, entry->d_name, 0, NULL, 0);
if( !reti ){
printf("directoy %s found -> %s", path, entry->d_name);
printf("\n");
}
else if( reti == REG_NOMATCH ){
//if the directory is not filtered out, we add it to the watch list
printf("good dir %s", entry->d_name);
printf("\n");
}
else{
regerror(reti, ®ex, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
}