rm *的posix正则表达式是什么?

时间:2013-12-06 13:27:40

标签: c regex posix

我想为rm *写一个posix正则表达式,其中rm*之间可以有1到多个空格。以下是我提出的正则表达式。我已经在一些在线posix正则表达式测试器上测试了它,但它在我的程序中没有工作。

正则表达式:^rm[[:space:]]+[*]$

regex_t regex;
int reti;

reti = regcomp(&regex, "^rm[[:space:]]+[*]$", 0);
if( reti ){ fprintf(stderr, "Could not compile regex\n"); exit(1); }
reti = regexec(&regex, linux_command_1, 0, NULL, 0);
if( reti == REG_NOMATCH )
{
    system(linux_command_1); 
}

3 个答案:

答案 0 :(得分:2)

由于ERE支持的+修饰符,它无效。 (有关详细信息,请参阅Regular Expressions。)

您需要将cflags设置为REG_EXTENDED,即说:

reti = regcomp(&regex, "^rm[[:space:]]+[*]$", REG_EXTENDED);

答案 1 :(得分:1)

+是一个扩展的正则表达式功能。将REG_EXTENDED标记传递给regcomp

答案 2 :(得分:0)

这个似乎正在运作

^rm\s+\*$