我想为rm *
写一个posix正则表达式,其中rm
和*
之间可以有1到多个空格。以下是我提出的正则表达式。我已经在一些在线posix正则表达式测试器上测试了它,但它在我的程序中没有工作。
正则表达式:^rm[[:space:]]+[*]$
regex_t regex;
int reti;
reti = regcomp(®ex, "^rm[[:space:]]+[*]$", 0);
if( reti ){ fprintf(stderr, "Could not compile regex\n"); exit(1); }
reti = regexec(®ex, linux_command_1, 0, NULL, 0);
if( reti == REG_NOMATCH )
{
system(linux_command_1);
}
答案 0 :(得分:2)
由于ERE支持的+
修饰符,它无效。 (有关详细信息,请参阅Regular Expressions。)
您需要将cflags
设置为REG_EXTENDED
,即说:
reti = regcomp(®ex, "^rm[[:space:]]+[*]$", REG_EXTENDED);
答案 1 :(得分:1)
+
是一个扩展的正则表达式功能。将REG_EXTENDED
标记传递给regcomp
。
答案 2 :(得分:0)
这个似乎正在运作
^rm\s+\*$